我正在使用CakePHP3。
我更喜欢将我的应用程序范围的PHP常量和Configure::write
值放在一个单独的php文件中,通常称为constants.php
然后在bootstrap.php
的末尾,我将包含此constants.php
文件。
我对PHP常量没有任何问题。但是,我在此单独文件中使用Configure::write
时遇到问题。
有没有办法在单独的php文件中使用Configure::write
?我尝试过使用
use Cake\Core\Configure;
在constants.php
内,但我仍然会收到错误。
修改
constants.php
<?php
/**
* provide all the kinds of site ID
*/
Configure::write('ADMINISTRATOR_SIDEBAR', array(
'quotations' => [
'link' => '/quotations',
],
'projects' => [
'sub_menu' => [
[
'title' => 'Project 1',
'icon' => '',
'link' => '/job_projects/view/5',
]
],
'link' => '/job_projects'
]
));
当我写那个然后
require __DIR__ . '/constants.php';
在bootstrap.php
我得到了
Error: Class 'Configure' not found
File ...constants.php
Line: 8
当我在use Cake\Core\Configure;
的顶部添加constants.php
时,错误将被删除。
这是否意味着我的问题已解决?
答案 0 :(得分:1)
你有那么多常数吗?改为使用类常量:
class UserType {
const ADMIN = 'admin';
const USER = 'user';
}
IMO最好让它们按类组织,而不是拥有大量的全局常量。我大部分时间都不喜欢常量,因为你不能在运行时永远不会改变它们。所以这只留下了两个用例:
解释2.多一点:$userRole === 'admin'
因为拼写错误而失败,你不会得到一个错误,并且可能最终调试情况非常糟糕,而$userRole === UserRole::ADMIN
会抛出错误错误,如果它不存在。
您没有显示任何代码,因此不知道您在使用Configure时遇到了什么问题。你为什么不在你要用该方法加载的文件中使用Configure::load()和`$ config = []'数组?