从包含的文件中检索变量

时间:2010-06-21 20:07:10

标签: php

我有一个php文件,其中包含另一个使用include()的文件 我在包含的文件中定义了一个变量$something,它将根据在包含文件中运行的函数而改变。

现在,我想在原始文件中打印该变量,当我使用echo $something时,它绝对没有打印,有帮助吗?

3 个答案:

答案 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调试已定义的变量