2011-06-08 118 views
3

对于下面的代码:PHP未定义的变量

line 10: echo "before require: ".$test; 
line 11: require(dirname(__FILE__) . 'load.php'); 
line 12: echo "after require: ".$test; 

输出:

before require: 
Notice: Undefined variable: test in /home/test.php on line 12 
after require: 

如果load.php很简单,也不会有消息:“通知:未定义的变量... “。为什么和“load.php”会如何影响$ test变量?

+1

请显示您的'load.php'源代码。 – pltvs 2011-06-08 07:19:29

回答

3

如果$test变量是unset里面load.php文件。

这将影响您的$test变量,您将显示Notice: Undefined variable

因为在include语句之前声明的变量将在包含文件中可用,所以对包含文件中的变量执行的任何操作都将影响该变量。

0

您的变量未设置,因此是通知消息。

如果您将值设置为load.php中的变量$test,它将具有该值。

如果你不这样做,那么......它会保持不确定的情况下,不是一个好的做法。

0

documentation

当包括一个文件,它包含的代码继承在其上包括发生该行的variable scope。从调用文件的那一行可用的任何变量将在被调用的文件中可用,从这一点开始。但是,包含文件中定义的所有函数和类都具有全局范围。

0

是不是应该是require(dirname(__FILE__) . '/load.php');? :)

不管怎么说,它看起来像你要么unset()变量load.php或修改display_errors和/或error_reporting更高水平load.php

0

如果已经配置PHP来显示所有通知,警告和错误 ,你会看到一个通知,当您运行此脚本:在/path/to/testtype.php上测试:注意: 未定义的变量当您使用php-development.inirather 而不是php-production.ini时,默认情况下,第3行的Notices 处于打开状态,并且在调试 脚本时可能会非常有用。