学习php自行开发MVC框架过程(三)

学习php自行开发MVC框架过程(三)

三、自动加载类库

1、我们首先打开core目录并创建一个route.php的文件

2、我们再打开core目录下的xia.php,再建一个方法load:

3、再打开入口文件在下面加一条

sql_autoload_register('\core\xia::load');//目的是当我们new一个类的时候如果这个类不存在的话他就会触发一个方法指定到xia下的load方法中去,通过这个方法我们把不存在的类引入一下

public static $classMap = array();//建一个静态属性,防止重复引入

static public function load($class){

    //自动加载类库

    //new \core\route();

    //$class = '\core\route';

    //IMOOC.'/core/route.php';相当于我们把$class的这个字符串转化为本行的字符串

    //然后就要把'\'转化为'/';


    if(isset($classMap[$class])){//如果这个类存在就直接返回true;

        return true;

    }else{   //如果该类不存在就判断该文件是否存在

        $class = str_replace('\\','/',$class);

        $file = IMOOC.'/'.$class.'php';

        if(is_file($file)){

            include $file;

            self::$classMap[$class] = $class;

        }else{

            return false;

        }

    }


最后我们进行测试在run方法中加

$route = new \core\route();

然后在route.php中这样写

<?php

namespace core;

class route

{

    public function __construct()

    {

        return p('route ok');

    }

}

可以看到route ok

这样我们就可以通过new一个不存在的类去触发sql_autoload_register这个方法,去找对应的自动加载的类,在自动加载的类当中如果已加载的话就会返回一个true避免重复加载的情况,如果没有就把我们对应的这个类转化一下,最后include进来,这样我们的一个自动加载类就完成啦吐舌头


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值