2010-10-17 31 views
2

我想从所要求的文件中访问父文件中定义的变量,就像这样:PHP变量在“必要”文件文件无法识别

< < < parent.php >> >

$controller = 'index'; 
require ('child.php'); 

< < < child.php >>>

echo $controller; 

莫名其妙地,我收到一个空输出,这意味着该变量不能通过child.php访问.. 我在这里做错了什么?如果可能的话,请让我知道如何在我的child.php文件中调用上面的变量,如果上面看起来是错误的。

问候
尼基尔古普塔

+1

它应该这样工作。你是否100%确定'child.php'被包含在内? – 2010-10-17 16:14:41

+0

尝试打印“测试”作为一个常数,以确保该文件包含在Pekka说... – tpow 2010-10-17 16:19:48

+0

@Pekka:是的,child.php包括在内。 child.php里面的其他功能很容易运行。 @cinqo:是包含文件。 – Stoic 2010-10-17 16:28:40

回答

4

被宣布为在函数体外部的变量?如果不是,它需要。

此外,从你的子文件调用变量时,尝试“初始化”,它与全球关键字使用前...

Global $myParentVariable; 

...然后尝试打印。另外,出于调试的目的,请将变量设置为父文件中的常量,而不是派生某些函数中的值。换句话说,确保它不是一个将值变为null的函数。 (我看到你在做这件事 - 但不知道你是否为了简单而修改它)

+0

好啊..在child.php中,我试图在函数内传递这个$ controller变量(作为参数),但是这不应该影响这个权利?我也尝试通过print(和var_dump)语句转储变量,并且都给了我null输出。最奇怪的是,这在我的本地主机上运行,​​但我的服务器并不喜欢它。 – Stoic 2010-10-17 16:26:45

+0

@Stoic - 你能发布实际的代码吗? – tpow 2010-10-17 16:32:26

+0

。我提供了上面的代码.. – Stoic 2010-10-17 16:47:41

0

这很奇怪。尝试看看是否变量定义的变量的一部分:

$vars = get_defined_vars(); 
print_r($vars); 

此外,如果在一个函数存在的变量,你可以用global关键字全球化了。

+0

是的,我没有访问函数内部的变量,只是试图将它作为函数的参数传递。 :| – Stoic 2010-10-17 16:28:05

1

好的,在这里找到了问题。 我想这是我的一个错误。 错误不在上述行中,但不知何故另一个变量是访问父php,直接访问子php。

所以,猜猜,它现在运行了,为什么变量不可用。