__autoload这个函数可有意思,这个魔术方法的功效是这样的,当你试图实例化一个当前程序中没有定义的类的时候,他会被触发,然后你可以自动加载指定的类文件名——当然你也可以做其他的,例如为所欲为呵呵……,总之他是在那个时候触发的!更多关于autoload方法的细节你可以查看 魔术方法__autoload()用法和注意事项
然而今天我却发现这个__autoload魔术方法或者你愿意称他为魔术函数,太专一了。当他加载需要包含的类文件时,甚至不管类文件中定义类之外的其它声明。
开始回放这个机制。
首先我们在创建一个Test.class.php文件,键入如下内容
$publicPara=’中共十七大啥时候召开的?’;
class Test{ public function __construct(){ global $publicPara; if(isset($publicPara)){ echo $publicPara; } else{ echo “管我啥事儿了?”; } } }
这次的输入居然是:管我啥事儿了?
很显然他忽略了我们在class外定义的变量,也就是他只把我们需要序列化的类加载进来,而不管其他的声明了,也仅仅是其他的声明而已,诸如echo了啥的都还是执行的。