php全局配置和应用程序中的设置

时间:2013-01-25 02:48:17

标签: php global-variables

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

的config.php

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

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

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

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

5 个答案:

答案 0 :(得分:3)

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

global $config;

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

  

无法声明变量。不存在的变量是   首次使用时使用空值创建。

     

全局变量在使用之前需要一个全局声明。   这是上述的自然结果,所以它将是完美的   合理的,除了没有明确的全局变量甚至无法读取   声明-PHP将静静地创建一个同名的本地,   代替。我不知道另一种类似范围的语言   的问题。

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

答案 1 :(得分:1)

在使用变量之前将global $config置于函数内。

有关示例,请参阅variable scope上的PHP手册。

答案 2 :(得分:0)

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

也许你需要PHP variable scope

答案 3 :(得分:0)

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

function foo() {
    global $config;

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

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

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

答案 4 :(得分:0)

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

class Page
{
    protected $config;
    public function __construct($configPath)
    {
        include $configPath;
        $this->config=$config;
    }
}