本文介绍了在PHP创建类的实例时调用构造函数的问题.
在PHP中,与Java不同,在创建类的实例时php调用类的方法,将首先自动调用父类(超类)的构造方法,以确保可以正确初始化所有属性. PHP不会在此类构造器中自动调用父类构造器. 如果确实需要调用父类的构造函数,则可以手动调用parent :: __ construct($ params ...);
基类{
function __construct(){
//在这里做…….
}
}
如果我们需要一些Extender来继承Basephp调用类的方法,我们需要注意
1. 我们是否需要调用父类的构造方法进行初始化
2. 我们是否需要根据父类构造方法执行其他扩展操作
3. 在Base构造方法中,我们不需要那些初始化操作.
如果我们的Extender仅满足情况1,则可以省略Extender的构造函数,因为父级的构造函数完全满足我们的要求,并且我们不需要执行其他编码.
如果Extender满足情况2,则需要在Extender的构造函数中调用parent :: __ construct(),首先对其进行初始化,然后执行一些扩展操作
如果我们的Extender满足条件3,我们可以选择不调用父类的构造函数. 这样做只有一个缺陷: 扩展Extender时,如果此扩展类需要Base构造函数的初始化操作,则调用parent :: __ construct()只能调用Extender的构造函数,而不能调用Base的构造函数类. 方法.
因此,我个人认为最好在子类构造函数中手动调用超类构造函数.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-254678-1.html