php高级特性
错误处理
注:try结构里,finally里的代码总会执行;
处理Notice、Warning的方法:
处理方法:
trait特性
trait示例:
示例2(多个trait使用):
示例3(trait中使用trait):
php预定义接口
注:只要是实现了ArrayAccess方法的类,都可以调用foreach方法遍历;
示例:通过foreach遍历日志中的IP和URL,日志的格式如上图:
注:IteratorAggregate要实现的抽象方法只有getIterator这一个,但该方法要求的数据类型为Iterator类,该类也是一个抽象类,Traversable,实现该类的方法可以精确控制foreach的每一个步骤;按php的官方说明,不能直接实现Traversable的方法,该类可以用来判断是否可以用foreach遍历;
生成器
注:生成器不需要事先在内存中建立整个数组,因此,在不会像file函数那样,有可能会发生php可使用内存不足的情况;
生成器示例:
示例2:
注:生成器 yield返回是一个可以通过foreach遍历的对象;
IteratorAggregate和生成器配合使用示例 :
总结:
魔术方法
回调函数
回调函数调用的方法:
注:参数中className是类名,mySortFunc是定义在类的方法; 最后这种匿名函数的写法只适应在,该函数只需要调用一次的情况;
匿名函数和闭包
命名空间
示例:
自动加载
反射
反射是指通一个反射类,获取另一个类的信息,如类下属性、方法等;
php的反射类有:
php命令行下工具的反射:
注:上面第一行将会分别反射strlen,拿到strlen的相关信息;
php中的魔术常量
事件机制与行为机制------yii