问答详情
源自:-

自动加载那个判断是否已经加载是不是不必要的?

自动加载那个判断是否已经加载是不是不必要的,因为如果已经加载过是不会触发load方法的吧?

提问者:茫海 2016-08-24 20:50

个回答

  • 李虎头
    2016-08-25 10:24:06
    已采纳

    主要是为了防止,跨方法和夸类的情况下发生重复引入的情况,毕竟作用域不一样。比如 indexCtrl中的index方法使用了 new /model,在baseCtrl中再使用new /model是会重新出发load方法的。



  • 茫海
    2016-08-26 10:29:56

    /**关于那个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();
        }
    }

    执行结果如下图所示:

    http://img.mukewang.com/57bfa8420001ff9b03030175.jpg

    最终只输出了一次load:Test,也就是说只有在第一次使用Test的时候才会自动调用load方法,后面再次使用Test并不会执行load了