无法从cakephp3中的app.php获得定义的常量

时间:2016-04-04 05:38:31

标签: php cakephp cakephp-3.0

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

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

然后我收到了错误

  

注意:使用未定义的常量WWW_ROOT - 假设第44行/config/app.php中的“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中定义

2 个答案:

答案 0 :(得分:1)

您应该使用CakePHP's own class for读取和写入app.php配置。

如果您想要read配置中的值,则只需拨打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'];

对于writing配置文件,您需要调用Configure::write($key, $value)

  

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

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

更多信息

修改

修复错误:在PHP中调用constant时,不要用'引号括起来,这是导致错误的原因。 See this answer

修改

对配置所做的所有更改都存储在运行时。要存储更改,请查看Storing Runtime ConfigurationCreating or Modifying Configuration Files

答案 1 :(得分:0)

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

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

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