php中的__autoload

Author Avatar
yyq 2020-07-31 10:29:06
  • 二维码

php中的__autoload

        php中,在__autoload魔术方法出现以前,我们实例化对象时,必须要引入其对应的类文件,当有多个实例化时,引入的文件就相当多了。如果使用__autoload方法,则不需要再引入多个类文件。


        NO1:之前示例

        require_once('project/class/A.php');

        require_once('project/class/B.php');

        require_once('project/class/C.php');

        

        if(条件A){

            $a = new A();

            $b = new B();

            $c = new C();

        }else if(条件B){

            $a = new A();

            $b = new B();

        }

        

        可以看到当运行条件B时,还需要多编译下C.php,增加了开销


        NO2:使用__autoload()

        function __autoload($classname){

            $filepath = "project/class/{$classname}.php";

            if(isreadable($filepath)){

                require($filepath);  //这里可以只用require,因为一旦引用某个类后,将不会调用__autoload(),直接使用内存中的该类

            }

        }

        if(条件A){

            $a = new A();

            $b = new B();

            $c = new C();

        }else if(条件B){

            $a = new A();

            $b = new B();

        }

        

        优势

        1:代码整洁,没有冗余代码

        2:效率较之前高,见NO2注释



上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语