1.PHP4中,我们可以在子类中覆盖并访问父类的方法,然而还是有不足:1.把对象赋值给变量,传递对象到函数,或从方法返回对象,结果都会创建对象的副本,即不是按引用来传递;
2.有一个被规划在PHP6中的特性,已经从PHP5.3中的到了支持:命名空间。通过命名空间创建类和函数的命名作用域,在扩展系统或者包含类库时,你就可以在不同的类库中使用名称相同的类,而不会产生冲突
3.对象可以被说成是类的‘实例’,它是由类定义的数据类型
4.在PHP4和PHP5(直到PHP5.1)中,直接输出一个对象,得到的是包含对象ID的字符串,PHP5.2开始不再支持这个功能,除非在对象中定义了__toString()方法
5.在面向对象开发中,“专注特定任务,忽略外界上下文”是一个重要的设计原则
6.为了解决“没有强制要求参数类型”这个问题,PHP5引入了类的类型提示。要增加一个方法参数的类型提示,之需要简单地将类名放在需要约束的方法参数之前,如
public function write(ShopProduct $shopProduct){
//
}
现在write()方法只接受包含ShopProduct类对象的参数
7.继承是从一个基类得到一个或多个派生类的机制。子类可以增加父类之外的新功能,因此子类也被称为父类的扩展
8.由于派生类没有定义构造方法,所以在实例化会自动调用父类的构造方法,且派生可以扩展和修改父类的功能
9.在子类中定义构造方法时,需要传递参数给父类的构造方法,否则可能得到一个构造不完整的对象。要调用父类的方法,首先要找到一个引用类本身的途径:句柄,PHP为此提供了parent关键字,如parent::__construct()
10.每个子类都会在设置自己的属性前调用父类的构造方法。基类现在仅直到自己的数据。子类一般是父类的特例。我们应该避免告诉父类任何关于子类的信息,这是一条经验规则。
11.当客户程序员需要使用类中保存的值时,通常比较好的做法是不要允许直接访问属性,而是提供方法来取得需要的值,这样的方法被称为“访问方法”,也可以称为getter和setter。其好处是可以使用访问方法根据环境过滤属性,