我有一个'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;在正确的地方?
答案 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;
}
}