我正在使用 CakePHP 2.4.5 和 PHP 5.5,并且想使用一个特征。
我在 Utility/VariablesTrait.php 中有一个称为VariablesTrait
.
为了利用命名空间,我给了它一个命名空间App\Utility\VariablesTrait
, since Utility\VariablesTrait
似乎有点太全球化了,前者与 CakePHP 3 配合得更好。
在我想使用它的课堂上,我有use App\Utility\VariablesTrait;
课堂上的发言。为了备份,我还有一个App::uses('VariablesTrait', 'Utility');
文件顶部的声明。我不确定在寻找特征时是否使用了 SPL 自动加载器,这就是我首先选择命名空间的原因。
小问题是应用程序目录是app
,并且由于目录结构应该与命名空间匹配(我认为),所以我将其重命名为App
。然而,CakeRequest::_base() 硬编码app
,所以确定控制器不太有效。
因此,我试图确定这是否是 CakePHP 的错误,或者是否有更合适的方法来使用 CakePHP 2 中的特征。
一个简单的方法是使用 CakePHPbuild http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#add-new-packages-to-an-application要添加您的包文件夹,然后只需按您选择的名称引用它,例如:
将其添加到bootstrap.php
:
/**
* Add New Package Locations
*/
App::build(['Controller/Trait' => [APP . 'Controller' . DS . 'Trait' . DS]], App::REGISTER);
然后用它来提取你的特征:
App::uses('TestTrait', 'Controller/Trait');
您还可以一次添加多个包文件夹,因此您显然可以执行以下操作:
/**
* Add New Package Locations
*/
App::build(['All/Trait' => [
APP . 'Controller' . DS . 'Trait' . DS,
APP . 'Model' . DS . 'Trait' . DS,
APP . 'Lib' . DS . 'Trait' . DS
]], App::REGISTER);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)