Posted on 2011-04-11 11:11
PHP博客 阅读(380)
评论(0) 编辑 收藏 引用 网摘 所属分类:
PHP
从理论上来讲,a.php中的代码没有任何问题,b.php直接调用的是全局函数,应该也没有问题啊,可是死活就是获取不到全局变量的值,然后在a中调用 g_test(),单独运行a.php,没有问题;单独写一个文件include,然后调用g_test(),也没有问题,直接google ”php global“也没有找到有用的信息,后来仔细一想,有可能跟类的autoload有关,又仔细阅读了php关于autoload的手册,在”EXAMPLE“部分看到有人提到这个问题:
货运代理
“虽然使用“自动加载“的方法,你应该注意变量的范围。新的文件,因为将被纳入__autoload函数里面的魔术-在这种全球范围内的所有文件中声明的变量将只在这个函数可以和任何其他地方。这将导致在某些情况下,奇怪的行为。“
海运新闻2则
大意是:当使用autoload方法时,要格外注意变量的作用域。由于新文件是在_autoload函数里进行include,所以include 的“新文件”中的“全局变量”就成了__autoload函数的局部变量,只能在__autoload函数作用域内引用。在某种情况下可能会导致一些奇怪的现象。
女装品牌排行榜
我们的项目使用了框架,自然会用到autoload,所以也就导致了无法获取global变量的情况,也就是说,实际的代码是: