我有一个php文件,其中包含另一个使用include()
我在包含的文件中定义了一个变量$something
,并且这将根据在包含文件中运行的函数进行更改。从包含的文件中检索变量
现在,我想在原始文件中打印那个变量,当我使用echo $something
它绝对没有打印什么,帮忙吗?
我有一个php文件,其中包含另一个使用include()
我在包含的文件中定义了一个变量$something
,并且这将根据在包含文件中运行的函数进行更改。从包含的文件中检索变量
现在,我想在原始文件中打印那个变量,当我使用echo $something
它绝对没有打印什么,帮忙吗?
我们只是暂时搁置,这是片刻:)
你可能运行到一个问题,即你没有声明的变量一个贫穷的设计选择作为修改它的函数的全局。
function foo()
{
global $something;
$something='bar';
}
你会在这方面找到最有教育意义的PHP手册页!
那么,为什么这是一个糟糕的设计选择?首先,请查看"Are global variables bad?",它回答了C++的问题。 PHP的答案实际上没有什么不同 - 它可能会导致无法维护且无法读取的代码。
PHP还有另外一个(越来越历史的)皱纹 - 如果'register_globals'设置打开,用户可以通过URL查询字符串设置全局变量。这可能会导致各种安全问题,这就是为什么现在默认情况下会关闭此功能(绝不会写入需要启用的新代码)。
作为一个智者曾经说过,“全局的路径黑暗的一面。全局导致的愤怒。愤怒导致恨。恨导致患” :)
使用get_defined_vars调试定义的变量
很可能您已声明你的变量在全局范围内,并试图在功能范围内使用它。要解决这个问题,请使用global
命令。
$myglobal = 3;
function printMyGlobal() {
global $myglobal; // will not work without this line
echo $myglobal;
}
+1,正是我在想什么。 – 2010-06-21 20:11:01
希望OP会跟进一个新问题,“为什么这是一个糟糕的设计选择”。 – Zak 2010-06-21 20:12:58
为什么这是一个糟糕的设计选择? (不是在一个新的问题,但我想获得的信息,如果你不介意:)) – user220755 2010-06-21 20:20:14