P13
在类中使用$this-> 调用一个未定义的属性时,PHP5会自动创建一个属性供使用。这个被创建的属性,默认的方法权限是public。
P17
在PHP5中,指向对象的变量是引用变量。在这个变量里面存储的是所指向对象的内存地址。引用变量传值时,传递的是这个对象的指向。而非复制这个对象。这与其它类型赋值有所不同。
P22
GC(Garbage Collector)
在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁。
这是PHP的GC(Garbage Collector)垃圾处理机制,防止内存溢出。
当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。
__destruct() 析构函数,是在垃圾对象被回收时执行。
unset对象时销毁的是指向对象的引用,而不是这个对象。
P36
私有变量不被继承,私有方法也不被继承。
另外一种说法,私有变量和属性被继承了,但不能被调用。
P40
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同)
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
P46
使用当前对象的属性必须使用$this关键字。
局部变量的只在当前对象的方法内有效,所以直接使用。
P50
PHP5中使用parent::来引用父类的方法。
parent:: 可用于调用父类中定义的成员方法。
parent::的追溯不仅于直接父类。
Private属性是不能被继承的,如果父类有私有的属性。那么父类的方法只为父类的私有属性服务。子类调用父类的方法返回的是父类的private属性,如果父类不是私有属性则调用子类自己属性。
P70
静态方法调用静态方法 self:: (self:: 它表示当前类的静态成员,与 $this 不同,$this 指当前对象)
静态方法调用静态属性 类名::静态属性名调用本类中的静态属性
静态方法不能调用非静态的属性 $this->或self::都不行
静态方法调用非静态方法 $this->不行 self::调用可以执行,因为系统会自动将这个方法转换为静态方法
P83
用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。
抽象类不能被实例化。
抽象方法是只有方法声明,而没有方法的实现内容。一个类中,如果有一个抽象方法,这个类必须被声明为抽象类
P99
在接口中只能有抽象方法(function xxx();),不能加非抽象方法比如function xxx(){}
在接口中的抽象方法只能是public的,默认也是public权限
在接口中可以定义静态常量。而且不用static修饰就是静态的常量。
P108
一个接口可以继承自另外的接口。
PHP5中的类是单继承,但是接口很特殊。一个接口可以继承自多个接口。
一个接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法。
要注意只有接口和接口之间使用 继承关键字extends。
类实现接口必须实现其抽象方法,使用实现关键字 implements。
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交付给具体能被实例化的类去处理。
P148
可以通过PHP5支持的try catch 语句捕获并处理异常。
如果try块未产生任何异常,try块将运行完毕,catch块内容不会被执行。
try块如果抛出了异常,会立刻在catch中寻找可以捕获改异常的catch块,并运行相应的catch块代码,然后跳出try catch块继续运行。而try块中抛出异常后面的代码将被跳过。
如果try块中的异常不能被catch块捕获,将抛向系统引发系统致命错误,代码终止运行。
在catch中,异常类型后面跟的是一个变量,这个变量将指向内存中被捕获的异常实例。