为什么在Cakephp 3.x中使用parent::initialize
为什么我需要在控制器的初始化方法上使用为什么在Cakephp 3.x中使用parent::initialize,php,cakephp,Php,Cakephp,为什么我需要在控制器的初始化方法上使用parent::initialize(),尽管它在没有此选项的情况下工作 使用:cakephp3 谢谢 这些是php OOP的基础知识: 您可能会发现自己编写的代码引用了基类中的变量和函数。如果派生类是基类中代码的细化或专门化,则这一点尤其正确 您不应该在代码中使用基类的文字名称,而应该使用特殊名称parent,它引用在类的extends声明中给定的基类名称。通过这样做,可以避免在多个位置使用基类的名称。如果您的继承树在实现过程中发生更改,那么只需更改类的e
parent::initialize()
,尽管它在没有此选项的情况下工作
使用:cakephp3
谢谢
这些是php OOP的基础知识: 您可能会发现自己编写的代码引用了基类中的变量和函数。如果派生类是基类中代码的细化或专门化,则这一点尤其正确 您不应该在代码中使用基类的文字名称,而应该使用特殊名称parent,它引用在类的extends声明中给定的基类名称。通过这样做,可以避免在多个位置使用基类的名称。如果您的继承树在实现过程中发生更改,那么只需更改类的extends声明即可轻松地进行更改
A类{
函数示例(){
echo“我是一个::example()并提供基本功能。
\n”;
}
}
B类扩展了A类{
函数示例(){
回显“I am B::example(),并提供附加功能。
\n”;
父::示例();
}
}
$b=新b;
//这将调用B::example(),后者将依次调用A::example()。
$b->example();
是否需要调用取决于您的实现。然而,在框架中,大多数情况下,在重写方法时调用父方法是一个好主意,以确保调用链中的逻辑。阅读php手册,它附带了一些示例。这些是php OOP的基础知识: 您可能会发现自己编写的代码引用了基类中的变量和函数。如果派生类是基类中代码的细化或专门化,则这一点尤其正确 您不应该在代码中使用基类的文字名称,而应该使用特殊名称parent,它引用在类的extends声明中给定的基类名称。通过这样做,可以避免在多个位置使用基类的名称。如果您的继承树在实现过程中发生更改,那么只需更改类的extends声明即可轻松地进行更改
A类{
函数示例(){
echo“我是一个::example()并提供基本功能。
\n”;
}
}
B类扩展了A类{
函数示例(){
回显“I am B::example(),并提供附加功能。
\n”;
父::示例();
}
}
$b=新b;
//这将调用B::example(),后者将依次调用A::example()。
$b->example();
是否需要调用取决于您的实现。然而,在框架中,大多数情况下,在重写方法时调用父方法是一个好主意,以确保调用链中的逻辑。阅读php手册,它附带了一些示例。parent只是从Override方法运行parent方法。请注意,您正在重写
initialize()
方法,但是父方法中可能有一些“东西”是必不可少的,因此,由于现在无法访问它(因为重写),您可以使用parent::method()
访问它,然后在那里运行代码需要注意的是,有时调用父方法的顺序很重要,例如您的代码代码>parent::method()
或父::方法()代码>你的代码
如果父级中存在您的代码取决于您必须首先调用父级的内容,这似乎是显而易见的。但是很容易忽略它,因为代码“位”可能存在于两个单独的文件中。parent只是从Override方法运行parent方法。请注意,您正在重写initialize()
方法,但是父方法中可能有一些“东西”是必不可少的,因此,由于现在无法访问它(因为重写),您可以使用parent::method()
访问它,然后在那里运行代码需要注意的是,有时调用父方法的顺序很重要,例如您的代码代码>parent::method()
或父::方法()代码>你的代码
如果父级中存在您的代码取决于您必须首先调用父级的内容,这似乎是显而易见的。但很容易忽略它,因为代码“位”可能存在于两个单独的文件中。实际上,它只是文档链接的复制和粘贴。甚至连这个例子都是从那里得到的。现在人们不再看文档了(实际上,这只是文档链接的复制和粘贴。甚至示例也取自此。现在人们不再阅读文档了。)(
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();