cake如何在bootstrap.php中包含一个单独的文件,该文件用于应用程序范围内的常量和其他应用程序范围的Conf


cakeHow to include a separate file inside bootstrap.php that is meant for application wide constants and other application-wide Configure::write values?

我正在使用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';
}

国际海事组织认为,与其拥有大量的全局常数,不如让它们在课堂上组织起来。大多数时候,我不喜欢常量,因为在运行时,你不可能永远都不更改它们。因此,这只剩下两个用例:

  1. 应该的东西在运行时永远不会更改(这是罕见的)
  2. 将它们用作"标识符"而不是字符串

解释2。还有一点:$userRole === 'admin'可能会因为打字错误而失败,你不会得到错误,可能会出现非常糟糕的调试情况,而执行$userRole === UserRole::ADMIN时,如果不存在,就会抛出错误。

您没有显示任何代码,所以不知道Configure做错了什么。为什么不在要用该方法加载的文件中简单地使用Configure::load()和"$config=[]"数组?