类型
- Boolean 布尔类型
- Integer 整型
- Float 浮点型
- String 字符串
- Array 数组
- Object 对象
- Resource 资源类型
- NULL
类型转换
- (int), (integer) - 转换为整形 integer
- (bool), (boolean) - 转换为布尔类型 boolean
- (float), (double), (real) - 转换为浮点型 float
- (string) - 转换为字符串 string
- (array) - 转换为数组 array
- (object) - 转换为对象 object
- (unset) - 转换为 NULL (PHP 5)
魔术常量
- LINE 文件中的当前行号
- FILE 文件的完整路径和文件名
- DIR 文件所在的目录
- FUNCTION 函数名称
- CLASS 类的名称
- TRAIT Trait 的名字
- METHOD 类的方法名
- NAMESPACE 当前命名空间的名称
超全局变量
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
运算符高到低
- 右 ** 算术运算符
- 右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
- 无 instanceof 类型
- 右 ! 逻辑运算符
- 左 * / % 算术运算符
- 左 + - . 算术运算符和字符串运算符
- 左 << >> 位运算符
- 无 < <= > >= 比较运算符
- 无 == != === !== <> <=> 比较运算符
- 左 & 位运算符和引用
- 左 ^ 位运算符
- 左 | 位运算符
- 左 && 逻辑运算符
- 左 || 逻辑运算符
- 左 ?? 比较运算符
- 左 ? : ternary
- 右 = += -= *= **= /= .= %= &= |= ^= <<= >>= 赋值运算符
- 左 and 逻辑运算符
- 左 xor 逻辑运算符
- 左 or 逻辑运算符
魔术方法
- __construct()
- __destruct()
- __call()
- __callStatic()
- __get()
- __set()
- __isset()
- __unset()
- __sleep()
- __wakeup()
- __toString()
- __invoke()
- __set_state()
- __clone()
- __debugInfo()
设计模式
- 工厂模式
- 单例模式
- 适配器模式
- 观察者模式
- 策略模式
- 注册树模式
排序算法
- 冒泡排序 (Bubble Sort)
- 快速排序 (Quick Sort)
- 选择排序 (Selection Sort)
- 堆排序 (Heap Sort)
- 插入排序 (Insertion Sort)
- 希尔排序 (Shell Sort)
- 归并排序 (Merge Sort)
- 鸡尾酒排序 (Cocktail Sort/Shaker Sort)
- 猴子排序 (Bogo Sort)
- 桶排序 (Bucket Sort)
- 基数排序 (Radix sort)
Redis 数据类型
- String(字符串)
- Hash(哈希)
- List(列表)
- Set(集合)
- zset(sorted set:有序集合)
面向对象
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态
SESSION与COOKIE
SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递
MyISAM和InnoDB
- MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,适合用于频繁查询的应用
- InnoDB类型支持事务,行锁,有崩溃恢复能力,读写速度比MyISAM慢,适合于插入和更新操作比较多的应用,空间占用大,不支持全文索引等
MVC三层结构
MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式
php的垃圾收集机制
php中的变量存储在变量容器zval中,zval中除了存储变量类型和值外,还有is_ref和refcount字段。refcount表示指向变量的元素个数,is_ref表示变量是否有别名。如果refcount为0时,就回收该变量容器。如果一个zval的refcount减1之后大于0,它就会进入垃圾缓冲区。当缓冲区达到最大值后,回收算法会循环遍历zval,判断其是否为垃圾,并进行释放处理
高并发网站解决方案
- 前端优化(CND加速、建立独立图片服务器)
- 服务端优化(页面静态化、并发处理[异步|多线程]、队列处理)
- 数据库优化(数据库缓存[Memcachaed|Redis]、读写分离、分库分表、分区)
- Web服务器优化(负载均衡、反向代理)