上一次修改时间:2018-06-15 18:10:45

php高级特征

  1. php高级特性

    image.png

  2. 错误处理

    image.png

    注:try结构里,finally里的代码总会执行;

    image.png

    QQ图片20180615130437.png

    image.png

    image.png

    处理Notice、Warning的方法:

    image.png

    image.png

    QQ图片20180615130826.png

    image.png

    处理方法:

    image.png

    image.png

  3. trait特性

    image.png

    image.png

    trait示例:

    image.png

    示例2(多个trait使用):

    image.png

    示例3(trait中使用trait): 

    image.png 

  4. php预定义接口

    image.png


    image.png

    注:只要是实现了ArrayAccess方法的类,都可以调用foreach方法遍历;

    image.png 

    示例:通过foreach遍历日志中的IP和URL,日志的格式如上图:

    image.png 

    image.png

    image.png

    image.png

    image.png

    image.png

    注:IteratorAggregate要实现的抽象方法只有getIterator这一个,但该方法要求的数据类型为Iterator类,该类也是一个抽象类,Traversable,实现该类的方法可以精确控制foreach的每一个步骤;按php的官方说明,不能直接实现Traversable的方法,该类可以用来判断是否可以用foreach遍历;

  5. 生成器

    注:生成器不需要事先在内存中建立整个数组,因此,在不会像file函数那样,有可能会发生php可使用内存不足的情况; 

    image.png

    生成器示例:

    image.png 

    示例2:

    image.png 

    注:生成器 yield返回是一个可以通过foreach遍历的对象;

    IteratorAggregate和生成器配合使用示例 :

    image.png

    总结:image.png 

  6. 魔术方法

    image.png

    image.png 

    image.png

  7. 回调函数

    回调函数调用的方法:

    image.png

    QQ图片20180615152253.png

    注:参数中className是类名,mySortFunc是定义在类的方法; 最后这种匿名函数的写法只适应在,该函数只需要调用一次的情况;

  8. 匿名函数和闭包

    QQ图片20180615170251.png

    QQ图片20180615170435.png

  9. 命名空间

    image.png

    示例:

    image.png

  10. 自动加载

    image.png

  11. 反射

    反射是指通一个反射类,获取另一个类的信息,如类下属性、方法等;

    php的反射类有: 

    image.png 

    php命令行下工具的反射:

    image.png 

    注:上面第一行将会分别反射strlen,拿到strlen的相关信息; 

  12. php中的魔术常量

    image.png

    image.png

  13. 事件机制与行为机制------yii