第六章 面向对象的PHP
- PHP中类的创建语法(p105)
- 使用->访问属性,在类的方法中使用$this->(p106)
- final:禁止子类覆盖整个属性(p108)
- __setter:设置属性值或者增加新的属性(p109)
- const:定义类中的常量(p111)
- abstract方法:父类中声明,子类中实现(p113)
- final方法:防止被子类覆盖?子类可见但是不可写?(p113)
- 类型提示:提供参数的类型检查?(p113)
- 构造函数:__construct(p116)
- 父类的构造函数需要显示调用。Parent::__construct()(p116)
- 调用别的类的构造函数:类名::__construct(p116)
- 静态方法和属性:使用self关键字和类名来引用(p118)
- instanceof关键字(p118)
- 类的辅助函数(p118)
- 自动加载对象:__autoload。应放在某个全局应用程序配置文件中(p120)
第七章 高级OOP特性
- PHP不支持:方法重载、操作符重载、多重继承(p121)
- PHP5中,所有对象其实都是引用。(怪不得使用箭头操作符访问方法和属性)(p122)
- 使用clone关键字来clone对象,clone得到的对象与原对象具有相同的属性(p122)
- __clone方法:定制化clone的过程(p123)
- 继承:extends关键字(p124)
- 如果子类不定义自己的contructor,php会向上搜索,直到找到父类的constructor,然后执行。代码里面写了parent::__constructor时,也是这个逻辑。如果上面有2层(或更多)父类,只会执行最近的父类的constructor。想要继续向上调用,要么在父类的constructor中写上parent,要么在子类中直接使用父类和更高父类的类名加::__construct来显式调用(p127)
- 继承与运行时静态绑定:继承时可以改变父类的static属性的值。访问这种属性时,不要使用self关键字,使用static关键字(p128)
- interface关键字:创建接口;implements:实现接口(p129)
- 实现多个接口:implements 接口1,接口2,接口3…(p130)
- 抽象类:abstract。不能实例化,而且子类必须实现所有接口(p131)
- 命名空间:在库中添加namespace,在调用代码中添加use(p132,133)
第八章 错误和异常处理
- error_reporting:错误敏感级别,或者报警级别(p135)
- Display_errors:将错误显示在浏览器上(p136)
- display_startup_errors:与display_errors相同,显示php引擎初始化时遇到的所有错误(p136)
- Log_error_max_len:单条日志最大长度(p136)
- ignore_repeated_errors和ignore_repeated_source:忽略重复或出现在同一位置的错误(p136)
- 8.2错误日志:暂略,回头来看(p137)
- 异常处理及异常类的扩展:其实throw的是一个exception类的实例。(p140,141)
- SPL对exception的扩展,暂略(p145)
第九章 字符串和正则表达式
- 正则表达式函数(posix扩展)
- ereg:区分大小写匹配字符串,可以使用圆括号取出其中的字符串(p149)
- eregi:同上,不区分大小写
- Ereg_replace:不区分大小写替换
- eregi_replace:不区分大小写
- split,spliti:split。。。
- perl风格正则表达式的修饰符(p152)
- PHP的正则表达式函数(perl兼容)(p153)
- preg_grep:以正则表达式搜索数组,返回匹配的元素构成的数组
- preg_match:检查字符串是否能够匹配到正则表达式
- preg_match_all:在字符串中匹配模式的所有出现。
- preg_quote:在每个对于正则表达式语法而言有特殊含义的字符前插入一个反斜线
- preg_replace:使用提供的字符串替换正则表达式匹配的部分。待匹配的目标可以是字符串或者字符串数组。
- preg_filter:相当于preg_replace,不过不会替换。
- preg_replace_callback:可以用回调函数来自定义对于匹配结果的处理方式。参考书中p156的例子
- preg_split:使用正则表达式split
- 其他字符串函数