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

Iva*_*van 4 php composer-php

你好,当我自动加载我的配置文件时,我有作曲家的问题.

在我的composer.json中,我创建

{
"require": {"monolog/monolog": "1.7.*@dev"},
"autoload":{
    "files": ["config/application.config.php"]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想自动加载我的配置文件,并在我的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'];
Run Code Online (Sandbox Code Playgroud)

我的application.config.php文件包含

/*
 * Data paths
 */
$config['cache_dir'] = 'data/cache';
$config['logs_dir']  = 'data/logs';
Run Code Online (Sandbox Code Playgroud)

当我尝试在test.php中打印值调用echo $ config ['logs_dir']时,我会注意到.文件由作曲家加载成功,但请注意我得到的内容

注意:未定义的变量:第18行的D:\ xampp\htdocs\MCF3\index.php中的$ config

Dan*_*ack 6

当Composer通过require它包含文件时,它是在一个函数中完成的,所以这样做:

$config['cache_dir'] = 'data/cache';
Run Code Online (Sandbox Code Playgroud)

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

$GLOBALS['config']['cache_dir'] = 'data/cache';
Run Code Online (Sandbox Code Playgroud)