配置文件中的变量在类中不可用

时间:2015-03-17 13:15:16

标签: php

我有一个简单的问题,但我似乎无法解决它。我有一个配置文件,包含格式为:

的变量
$config['something'] = 'value';

这个文件包含在index.php中,我还有一个__autoload函数。一切正常,配置文件在index.php中可用(我可以输出每个值),当我启动一个类或调用一个静态对象时,自动加载器完成这项工作。

问题是我尝试将这些配置值用作我加载的类中的参数,并且每个都得到“undefined variable:config”错误。我做错了什么?

的config.php

$config['item1'] = 'value1';
$config['item2'] = 'value2';
$config['item3'] = 'value3';

index.php

require_once('config.php');
function __autoload()...

class.mysql.php

function connect() {
    mysqli_connect($connect['host'] etc.                            
...

显然,上面是我正在做的简化版本来说明文件之间的关系。如何让config.php中的变量在自动加载的类中可用?

谢谢!

1 个答案:

答案 0 :(得分:0)

您面临范围问题,在函数外部创建的变量在其中无法访问,并且函数内部的变量创建在其外部无法访问。

此处有更多信息:PHP Variable Scpope

您有两种解决方案:

  1. 将$ config数组作为参数传递给函数
  2. <强>的index.php

    require_once('config.php');
    function __autoload($config)...
    

    <强> class.mysql.php

    function connect($config) {
        mysqli_connect($connect['host'] etc.  
    

    查看实际操作:http://3v4l.org/RYfc0

    1. 使用全局
    2. <强>的index.php

      require_once('config.php');
      function __autoload()...
      

      <强> class.mysql.php

      function connect() {
          //If you want to use the $config variable here
          global $config;
          mysqli_connect($connect['host'] etc.  
      

      查看实际操作:http://3v4l.org/ES4ej

      我个人更喜欢使用第一个解决方案,因为它可以帮助我更轻松地了解$config变量的来源