构造函数的_construct之间差异的详细说明()和()_initialize在ThinkPHP

前言

我相信和熟悉ThinkPHP基本熟悉_initialize()方法。我们似乎很难用_construct()。除非我们编写插件,否则它很少使用。

今天,我看到代码,突然看到_construct施工方法(),这是PHP。我的第一感觉很奇怪。虽然我经常遇到java学习之前,我没忘了很长时间。我通常的习惯是给我知识的关键

在我小小的笔记里,却不长时间的写作,高中的优雅和优雅的写作风格完全被ISO给抛弃了,再加上以前的想法,我们学会了写博客的技术。这不是关于压缩,而是让它们的碎片随着时间慢慢消失。让我们来看看详细的介绍。

首先,将代码(我的环境是WAMP,使用TP框架):

创建fatheraction.class.php文件


< PHP


类fatheraction延伸动作{
公共功能__construct(){
echo'father;
}
}

>


创建sonaction.class.php文件


< PHP


类sonaction延伸fatheraction {
公共功能__construct(){
echo'son;
}
函数索引(){

}
}

>


指数()在运行子类sonaction可以看到输出结果:


儿子


如果子类被更改为:


< PHP


类sonaction延伸fatheraction {
公共功能__construct(){
家长::__construct();
echo'son;
}
函数索引(){

}
}

>


手术结果是;


fatherson


以上结果可以得出结论:

父类的构造函数不会自动调用子类的构造函数时执行,如果你想打电话,然后加入家长::__construct()

当我们改变上述施工方法的thinkphp_initialize()方法,我们会发现,结果与前一个一致的。如果我们想要执行的_initialize()父类的方法,我们还需要用这样一句话:家长::_initialize()。

是PHP的构造函数__construct一样()是为_initialize相同()方法的ThinkPHP

首先附上两段代码:


< PHP


类fatheraction延伸动作{
公共功能__construct(){
echo'father;
}
}

>



< PHP


类sonaction延伸fatheraction {
公共功能_initialize(){
echo'son;
}


函数索引(){

}

}

>


当类sonaction索引方法时,输出的是:父亲

那是,子类调用父类的构造函数,不叫_initialize()子类的方法

代码的另外两个部分:


< PHP


类fatheraction延伸动作{
公共功能__construct(){
如果(method_exists($,你好)){
$ $ > hello();
}
echo'father;
}
}

>



< PHP


类sonaction延伸fatheraction {
公共功能_initialize(){
echo'son;
}
函数索引(){

}

函数hello(){
echo'hello;
}
}

>


这类sonaction索引方法被执行,和输入的结果hellofather

由此可以得出结论:

当ThinkPHP父类有一个构造器,子类不,ThinkPHP不执行_initialize()的子类;

当父类的子类的构造函数的ThinkPHP,调用父类的构造函数必须使用父::__construct _initialize()()的发展;

当有__construct ThinkPHP子类的构造函数和_initialize()在同一时间的方法,它只执行子类的构造函数__construct。

总结

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持。