上一章我们我们把入口文件完成了,这一章我们要进行的便是一个自动加载类的功能。
首先我们这个自动加载类放在的是imocc.php文件中,新建一个静态方法起名叫load。
static public function load(){
}
然后我们在core目录下新建一个路由文件route.php , 首先便是命名空间,接下来给创建一个类名为route 。
<?php
namespace core;
class route
{
}
我们要加载这个路由类,要三部分 ,首先需要一个方法来当我们new一个类时,类不存在便加载这个方法。将它放在入口文件中 include CORE.’/imooc.php’; 的下面。
include CORE.'/imooc.php';
spl_autoload_register('\core\imooc::load');
然后我们便在imocc.php文件中的load方法中写我们的类库,首先我们需要接受一个参数 class,class的样子就是 class=’\core\route’;我们需要把这个路径转换为项目的路径。首先我们需要把反斜线替换成 \ 。然后我们判断一下这个文件是否存在,如果是的话那我们就引入它,如果不是的话 我们就return false 。对于性能的考虑,这个类要是引入过一次就不用再引入了,所以我们建一个临时变量,来储存我们加载好的类 , 在我们引入一个类的时候我们先来判断这个变量中是否有我们要引入的类,如果有我们就直接返回true,没有在进行底下的加载,如果我们加载成功就用self放入我们的临时变量当中。
public static $classMap=array();
static public function load($class){
if(isset($classMap[$class])){
return true;
}else{
$class=str_replace('\\', '/',$class);
$file = MVC.'/'.$class.'.php';
//p($file);
if(is_file($file)){
include $file;
self::$classMap[$class] = $class;
}else{
return false;
}
}
}
这下我们的自动加载类这个功能便完成了。