我自动加载配置文件时,我的作曲家有问题。
在我的 composer.json 中创建
{
"require": {"monolog/monolog": "1.7.*@dev"},
"autoload":{
"files": ["config/application.config.php"]
}
}
我想自动加载我的配置文件,并在我的test.php文件中输入:
// Get composer autoloading
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\FirePHPHandler;
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/data/logs/log.log', Logger::DEBUG));
$logger->pushHandler(new FirePHPHandler());
$logger->addInfo('test message');
// test
echo $config['logs_dir'];
我的 application.config.php 文件包含
/*
* Data paths
*/
$config['cache_dir'] = 'data/cache';
$config['logs_dir'] = 'data/logs';
当我尝试在test.php调用中打印值时,我注意到了 echo $ config ['logs_dir']。文件由作曲家成功加载,但请注意我得到的内容
注意:未定义的变量:第18行的D:\ xampp \ htdocs \ MCF3 \ index.php中的$ config
答案 0 :(得分:6)
当Composer通过require
包含文件时,它在一个函数中执行此操作,这样做:
$config['cache_dir'] = 'data/cache';
不会在全局范围内创建变量。如果您希望能够读取/写入全局变量,则应明确使用$GLOBALS
关键字。
$GLOBALS['config']['cache_dir'] = 'data/cache';