1

我有一个文件“config.php”,它包含在我的程序开头(见下文)主文件运行require 'config.php';

配置文件

<?
global $config;
$config['tblist'] = 'pending'; 
$config['tbdone'] = 'checked';
$config['checkfreq'] = 24;
?>

然后我创建一个新的页面对象

$page = new Page($name,$source);

该页面对象中的一个函数我希望能够从配置中获取内容,但它似乎无法引用 $config。我放了全局 $config; 在正确的地方?

4

5 回答 5

3

在函数中引用全局变量时,必须将它们声明为全局变量:

global $config;

这也很有趣: http: //me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

没有办法声明变量。不存在的变量在首次使用时创建为空值。

全局变量在使用之前需要一个全局声明。这是上述情况的自然结果,所以它是完全合理的,除了没有显式声明甚至无法读取全局变量——PHP 将悄悄地创建一个具有相同名称的局部变量。我不知道有类似范围问题的另一种语言。

公平地说,如果您启用了它们,它也会发出通知。

于 2013-01-25T02:50:43.913 回答
1

global $config在使用变量之前放入函数内部。

有关示例,请参阅有关变量范围的 PHP 手册。

于 2013-01-25T02:52:42.990 回答
0

你应该在函数中声明 $config 是全局变量

也许你需要PHP 变量范围

于 2013-01-25T02:51:38.923 回答
0

在需要使用 $config 的函数中,你是不是先将 $config 声明为全局的?例如:

function foo() {
    global $config;

    $a = $config['tblist'];
    ....
}

$config 只会在第一次声明时引用全局变量,否则它将引用本地范围内的变量。

您可以在此处找到有关全局变量的更多详细信息:PHP Globals

于 2013-01-25T02:54:57.283 回答
0

您可以在 Page 对象中包含 $config :

class Page
{
    protected $config;
    public function __construct($configPath)
    {
        include $configPath;
        $this->config=$config;
    }
}
于 2013-01-25T02:55:17.050 回答