我正在使用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
然后,当我在constants.php
的顶部添加use Cake'Core'Configure;
时,错误就消除了。
这是否意味着我的问题得到了解决?
你有那么多常量吗?改为使用类常量:
class UserType {
const ADMIN = 'admin';
const USER = 'user';
}
国际海事组织认为,与其拥有大量的全局常数,不如让它们在课堂上组织起来。大多数时候,我不喜欢常量,因为在运行时,你不可能永远都不更改它们。因此,这只剩下两个用例:
- 应该的东西在运行时永远不会更改(这是罕见的)
- 将它们用作"标识符"而不是字符串
解释2。还有一点:$userRole === 'admin'
可能会因为打字错误而失败,你不会得到错误,可能会出现非常糟糕的调试情况,而执行$userRole === UserRole::ADMIN
时,如果不存在,就会抛出错误。
您没有显示任何代码,所以不知道Configure做错了什么。为什么不在要用该方法加载的文件中简单地使用Configure::load()和"$config=[]"数组?