0

我有一个创建数组的 config.php 文件,例如

$config = array(
       'foo' => 'bar'
);
function foo()
{
       echo 'good';
}

我还有另一个打印东西的实用程序.php 文件,这取决于 config.php

require_once(-the absolute path to config.php-);
class Utility{
  function bar()
  {
    echo count($config);
    echo foo();
  }
}

我的 index.php 脚本依赖于 config.php 和 utility.php。因此,当我包含 foo.php 时,我再次包含了 config.php。就像是

require_once(-the absolute path to config.php-);
require_once(-the absolute path to utility.php-);
echo count($config);
utility::bar();

这个函数打印出来

1good

但是,当我尝试调用 Utility::bar 时,它会为 count($config) 打印 0 - 尽管 count($config) 在 index.php 中返回 1,但 $config 数组永远不会在 utility.php 中创建。有趣的是,在utility.php 中调用函数foo() 仍然返回“好”。使 $config 全局化并没有改变任何东西(我听说这种风格很糟糕)。

4

1 回答 1

1

看起来你有一个变量范围问题。阅读有关 PHP 变量范围的信息。作为一个例子,我想如果你改变了

echo count($config);

global $config;
echo count($config);

它会起作用的。

于 2012-06-19T00:23:46.787 回答