您的位置:首页 > 编程语言 > PHP开发

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

2016-12-24 16:23 211 查看
学习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进来,这样我们的一个自动加载类就完成啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  封装 mvc php 框架