为什么在Cakephp 3.x中使用parent :: initialize

时间:2017-07-26 15:11:24

标签: php cakephp

为什么我需要在Controller上初始化方法时使用 parent::initialize() ,虽然没有它可以工作?

使用:cakephp 3

由于

1 个答案:

答案 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手册,附带示例。