App :: uses('AppController','Controller')在每个控制器中的用途是什么 - cakephp

时间:2014-08-10 14:11:32

标签: cakephp

当烘焙一些控制器时,我注意到每个控制器的顶部都有一行

App::uses('AppController', 'Controller');

删除它没有任何区别,AFA我注意到,没有那条线,一切正常。自动填充在任何情况下都有效,因此不能用于此目的。那么,那是什么意思呢?我的蛋糕版本是2.5.3。

由于

1 个答案:

答案 0 :(得分:7)

App :: uses是一个静态方法,用于注册文件的位置(与类对应),以便加载PHP自动加载器以便能够即时加载它。

App::uses('AppController', 'Controller');行声明如果AppController类被引用(或扩展,在本例中)并且AppController类尚未定义,它应该在app/Controller中查找该文件目录并构造实际的文件名,如下所示:AppController.php部分是cakePHP约定,部分PHP5。

删除此行时没有任何中断的原因是因为该文件可能需要应用程序中的其他位置(另一个控制器,在引导期间 - 所以php已经在内存中有AppController类。

它包含在第一行的原因是因为您烘焙的控制器扩展了AppController类。它对正在加载的AppController类具有硬依赖性,并且可能在蛋糕外壳或单元测试环境中,app控制器不会自动加载,因此必须进行包含。 App :: uses就像告诉cake(和PHP)那样'嘿,如果你正在寻找AppController类并且你还没有它,你应该查看app / Controller目录并添加{最后{1}}!'如果文件已经加载,App :: uses将无效。