茫海
2016-08-24 20:50
自动加载那个判断是否已经加载是不是不必要的,因为如果已经加载过是不会触发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了
从零开始打造自己的PHP框架
48252 学习 · 178 问题
相似问题