zoukankan      html  css  js  c++  java
  • 自动加载类

    思考:

      有哪些类文件需要加载?

    回答:

      一共有三种:

        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');
  • 相关阅读:
    BZOJ_4320_ShangHai2006 Homework_分块
    BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
    BZOJ_2788_[Poi2012]Festival_差分约束+tarjan+floyed
    BZOJ_2795_[Poi2012]A Horrible Poem_hash+暴力
    BZOJ_1598_[Usaco2008 Mar]牛跑步_A*
    [转载]java匿名对象
    [转载]static in Java
    Bat批处理文件入门
    在set中放入自定义类型
    [转载]C++STL概述
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14329812.html
Copyright © 2011-2022 走看看