自动加载类

思考:

  有哪些类文件需要加载?

回答:

  一共有三种:

    1.核心框架类(已经确定好了);

    2.控制器类(可以增加)‘

    3.模型类(可以增加)

对于所有的类,可以分成两个方面来考虑

  1.对于已经确定好了的类,最好采用最简洁的方式进行直接加载

  2.对于不确定的可以增加类,需要通过类名的规律,完成其位置的判断,然后再进行自动的加载

  

  基本规律是:

  对于Controller结尾的类,说明是控制器类,应该在当前对应的平台下的Controller目录进行加载

  对于Model结尾的类,说明是模型类,应该在当前对应的平台下的Mdel目录进行加载

在index.php 入口文件中定义自加载方法

    function autoload($class_name){
        //先把已经确定的核心类放到一个数组中
        $frame_class=array(
            "Controller"=>"./framework/Controller.class.php",
            "Factory"=>"./framework/Factory.class.php",
            "Model"=>"./framework/Model.class.php",
            "MyPDO"=>"./framework/MyPDO.class.php",
        );
        //判断是否是核心类,
        if(isset($frame_class[$class_name])){
            //说明是核心类
            include $frame_class[$class_name];
            //如果不是核心类,我们截取后10个字符等于Controller说明是控制器类
        }elseif (substr($class_name,-10)=="Controller"){
            //在当前平台的Controller目录下进行加载
            include './application/'.PLATFORM.'/Controller/'.$class_name.'.class.php';
        }elseif(substr($class_name,-5)=="Model"){        //如果截取后5个字符==Model 说明是Model模型类
            //在当前平台下的Model目录下进行加载
            include './application/'.PLATFORM.'/Model/'.$class_name.'.class.php';
        }
    }

    //执行自动加载类
    spl_autoload_register('autoload');
原文地址:https://www.cnblogs.com/xiaowie/p/14329812.html