我看到那条线了
parent::initialize();在CakePHP 3.x和所有3.x文档中的所有预加载方法中。
删除行,或忘记将行添加到新方法中,似乎没有任何负面影响。
这就引出了一个问题,它是做什么的?
抱歉这完全是个问题..。
发布于 2015-04-27 19:44:48
这是简单的OOP。调用同名的父方法。
Aclass {
public function foo() { echo 'bar'; };
}
Bclass extends Aclass {
public function foo() { parent::foo(); echo 'foobar'; }
}只要尝试并删除父调用,您就会看到它的作用。通常应该调用父函数,特别是在初始化()回调之类的方法中。然而,何时打电话或不打电话是你必须做出的决定。这取决于您是否希望或需要调用父方法逻辑。这就是所谓的“超载”。
这允许您在方法的父调用之前或之后添加功能,这是非常常见的事情。我向php手册的阅读OOP一章推荐您。
发布于 2015-04-27 19:43:38
在Controller的initialize()方法中,可以定义任何要加载的组件,以及它们的任何配置数据:
public function initialize()
{
parent::initialize();
$this->loadComponent('Security');
$this->loadComponent('Paginator');
$this->loadComponent('RequestHandler');
} 发布于 2015-04-29 10:49:44
这正是它所说的从父类运行方法的方式。举个例子。
class AppController extends Controller {
public function initialize() {
echo 'hello world';
// do more sh*t
}
}
class UsersController extends AppController {
public function initialize() {
parent::initialize(); // this will run the method initialize from app controller that will echo 'hello world'
// do more sh*t
}
}https://stackoverflow.com/questions/29903778
复制相似问题