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

来源:-

茫海

2016-08-24 20:50

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

写回答 关注

2回答

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

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



    李虎头 回复茫海

    同学,经过我多次测试和查阅文档,你是对的!不过很遗憾没有办法更新视频课程,不过我会把我的框架关于自动加载的部分优化一下

    2016-08-29 11:17:07

    共 4 条回复 >

  • 茫海
    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了

从零开始打造自己的PHP框架

和我一起开发一套属于自己的PHP框架,自己开发的才是最好用的

48187 学习 · 162 问题

查看课程

相似问题