1.PHP不支持多重继承,但是可以为一个类声明多个接口。一个类可以在继承自一个基类的同时,实现多个接口,例如:
class MyCar extends Car implements Interface1,Interface2 {}
2.契约式编程是指在编写类之前事先声明接口的一种编程实践。可以用来增强封装性,优化工作流。
例如:类A和类B在交互时使用了一个唯一的接口I,这个接口就可以被看做是一个契约,然后可以将创建A类的任务交给程序员甲,将创建B类的任务交给程序员乙,甲乙之间只须遵循这个契约来编码,不需要他们在超出I接口的范围之外进行合作。
3.instanceof操作符检查的三件事情:
(1).实例是否是某个特定类型;
(2).实例是否从某个特定类型继承;
(3).实例或者它的任何祖先是否实现了特定的接口。
4.PHP6在“self::”、“parent::”的基础上,新增了“static::”作用域,这个限定符会在代码执行之前立即计算出继承层次结构上最后那个类的成员(这个过称被称为“延迟绑定”),可以实现在父类中调用子类的方法,这在以前的版本中是不可能的。
5.什么时候需要使用静态方法,什么时候需要使用非静态方法?
一个原则是:如果某个方法不包含$this变量,则使用静态方法,如果不需要类的实例,可以使用静态类。
静态类的使用是有争议的,因为它违背了IoC(控制反转)设计原则,IoC设计原则试图在OOP中去掉所有的相互依赖现象,使对象具有更好的多态性和封装性,能够更容易地测试某个组件。
“静态”特性从本质上讲,是定义了两个类之间的绑定关系,因为类的名称是硬编码的,类之间通过名称绑定在一起,使得单独测试某个组件变得困难。
不过,大多数PHP应用程序最终都没有采用IoC设计原则,静态特性的使用应该被优先考虑。
6.模式的两个作用:
(1).帮助我们定义负责完成特定任务的对象(称为类的“职责”)。
(2).允许我们全部修改掉某个类而不用修改与这个类打交道的代码(称为类的“多态性”)。
7.单件模式的三要素:
(1).必须有一个构造函数,并且必须是私有的(private)。
(2).必须有一个保存类实例的静态成员变量。
(3).必须有一个访问这个实例的公共的静态方法。
另外,为了防止PHP语言中可以复制对象从而破坏单一职责这个漏洞,还应该增加一个私有的__clone()方法。