为什么我需要在Controller上初始化方法时使用 parent::initialize()
,虽然没有它可以工作?
使用:cakephp 3
由于
答案 0 :(得分:2)
这些是PHP OOP基础知识:http://php.net/manual/pl/keyword.parent.php
您可能会发现自己编写的代码引用了基类中的变量和函数。如果派生类是基类中代码的细化或特化,则尤其如此。
不应在代码中使用基类的文字名称,而应使用特殊名称parent,它指的是类的extends声明中给出的基类名称。通过这样做,您可以避免在多个位置使用基类的名称。如果您的继承树在实现过程中发生了变化,只需更改类的扩展声明即可轻松进行更改。
class A {
function example() {
echo "I am A::example() and provide basic functionality.<br />\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.<br />\n";
parent::example();
}
}
$b = new B;
// This will call B::example(), which will in turn call A::example().
$b->example();
如果您需要致电您的实施。但是,在一个框架中,大多数情况下,在重写方法时调用父方法是个好主意,以确保调用链中的逻辑。阅读php手册,附带示例。