我有一个php文件,其中包含另一个使用include()
的文件
我在包含的文件中定义了一个变量$something
,它将根据在包含文件中运行的函数而改变。
现在,我想在原始文件中打印该变量,当我使用echo $something
时,它绝对没有打印,有帮助吗?
答案 0 :(得分:9)
让我们暂时不说这是一个糟糕的设计选择:)
你可能遇到了一个问题,你没有在修改它的函数中将变量声明为全局变量。
function foo()
{
global $something;
$something='bar';
}
你会发现variable scope上的PHP手册页在这方面最具教育意义!
那为什么这是一个糟糕的设计选择呢?首先,查看"Are global variables bad?",它回答了C ++的问题。 PHP的答案实际上并没有什么不同 - 它可能会导致无法维护和无法读取的代码。
PHP还有另一个(越来越历史性的)皱纹 - 如果'register_globals'设置打开,用户可以通过URL查询字符串设置全局变量。这可能导致各种安全问题,这就是为什么现在默认关闭它(从不编写需要启用它的新代码)。
正如一个聪明人曾经说过的那样,“全球化是走向黑暗面的道路。全球化导致愤怒。愤怒导致仇恨。仇恨导致痛苦”:)
答案 1 :(得分:1)
您可能已在全局范围内声明了变量,并尝试在功能范围内使用它。要解决此问题,请使用global
命令。
$myglobal = 3;
function printMyGlobal() {
global $myglobal; // will not work without this line
echo $myglobal;
}
答案 2 :(得分:0)
使用get_defined_vars调试已定义的变量