Composer自动加载文件返回Undefined变量

时间:2014-01-24 16:09:51

标签: php composer-php

我自动加载配置文件时,我的作曲家有问题。

在我的 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

1 个答案:

答案 0 :(得分:6)

当Composer通过require包含文件时,它在一个函数中执行此操作,这样做:

$config['cache_dir'] = 'data/cache';

不会在全局范围内创建变量。如果您希望能够读取/写入全局变量,则应明确使用$GLOBALS关键字。

$GLOBALS['config']['cache_dir'] = 'data/cache';