自动加载那个判断是否已经加载是不是不必要的,因为如果已经加载过是不会触发load方法的吧?
主要是为了防止,跨方法和夸类的情况下发生重复引入的情况,毕竟作用域不一样。比如 indexCtrl中的index方法使用了 new /model,在baseCtrl中再使用new /model是会重新出发load方法的。
/**关于那个autoload的问题,由于回复那里有字数限制,我就另外开一个问题来回复您了*/ <?php /** * index.php */ spl_autoload_register("load"); $test = new Test();//第一次使用Test类,输出:“开始load:Test....” Third::test();//第二次,在另外一个类的方法里面使用Test类,并不会输出“开始load:Test....” test();//第三次在函数中使用Test,并不会输出“开始load:Test....” function load($class) { echo "开始load:".$class."....<br/>"; require $class.".php"; } function test() { new Test(); }
<?php /** * Test.php */ class Test { }
<?php /** * Third.p */ class Third { public static function test() { $test = new Test(); } }
执行结果如下图所示:
最终只输出了一次load:Test,也就是说只有在第一次使用Test的时候才会自动调用load方法,后面再次使用Test并不会执行load了