可以从cakehp3中的app.php中获取定义的常量


cakeunable to get defined constant from app.php in cakephp3

我正在尝试从app.php获取php file(let say /webroot/1/2/getConf.php)的配置。

我做的是$conf = require('../../../config/app.php');getConf.php

然后我得到一个错误

注意:在第44行的/config/app.php中使用未定义的常量WWW_ROOT-假定为"WWW_ROOT"

所以我调试了$conf,得到了这些

array (
'debug' => true,
'App' => 
  array (
    'namespace' => 'App',
    'encoding' => 'UTF-8',
    'base' => false,
    'dir' => 'src',
    'webroot' => 'webroot',
    'wwwRoot' => 'WWW_ROOT',

如您所见,我无法获得WWW_ROOT常量,该常量应在paths.php 中定义

您应该使用CakePHP自己的类来读取和写入app.php配置。

如果您想从配置中读取一个值,只需调用Configure::read($key = null)即可。

用于从应用程序读取配置数据。默认为CakePHP的重要调试价值。如果提供了密钥,则数据为返回。使用上面write()中的示例,我们可以读取该数据背面:

Configure::read('Company.name');    // Yields: 'Pizza, Inc.'
Configure::read('Company.slogan');  // Yields: 'Pizza for your body
                                    // and soul'
Configure::read('Company');
// Yields:
['name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul'];

为了写入配置文件,您需要调用Configure::write($key, $value)

使用write()将数据存储在应用程序的配置中:

Configure::write('Company.name','Pizza, Inc.');
Configure::write('Company.slogan','Pizza for your body and soul');

更多信息

  • 配置
  • 读取配置数据
  • 写入配置数据

编辑

纠正错误:在PHP中调用常量时,不要用'引号将其括起来,这就是导致错误的原因。看看这个答案

编辑

对配置所做的所有更改都存储在运行时。要存储更改,请参阅存储运行时配置和创建或修改配置文件。

@Eric Lee您需要在paths.php文件中定义常量

路径-project->config->paths.php

这里你可以定义任何常量,也可以在任何控制器中检索,它适用于CakePHP 3.0,所以请尝试这个