是的,我知道全局变量是一种不好的做法,但是为这个规则放宽了规则:P
我的代码:
include('something.php'); //where $from is declared
function myfunc() {
global $from;
echo "from(myfunc)=$from<br />";
...
}
echo "from=$from<br />";
myfunc();
结果是:
from=2010-05-01
from(myfunc)=
发生了什么事? :(
编辑: 如果它有帮助,上面的所有代码都在CodeIgniter中的视图文件中(是的,我知道函数不应该在视图内部:P)
答案 0 :(得分:25)
我敢打赌,这个片段不是全球范围内的啤酒。你是在函数中调用它吗?
在这种情况下,您在$from
中定义的something.php
不是全局的,而您在函数中引用的是global $from;
。
如果您在定义something.php
之前在$from
内添加{{1}},则可能会有效。
毋庸置疑,无论如何,这都不是一个好习惯,你应该遵循戈登的建议。
答案 1 :(得分:14)
帮自己一个忙,并使用Dependency Injection.
function myfunc($from) {
return "from(myfunc)=$from<br />";
}
$from = '2010-05-01';
echo myfunc($from);
这样做会使您的代码更易于维护,更少耦合,更容易进行单元测试,因为它与全局范围隔离。另外,当你这样做时,人们会觉得你很酷。