1)将自动加载方法放到基本类中
2)模拟工作原理如何调用类 调用类须要有三个步骤 首先我们要用到一个方法 方法名为
spl_autoload_register('类的路径');//类不存在触发(需要引入命名空间)
3)将接过来的值中的反斜线改为正斜线用到的方法是
str_replace('\\', '/', $class) 因为一个反斜杠是转义,所以需要两个反斜杠。
4)在引入一个类的时候先要判断是否已经引用了这个类 如果引用了我们返回一个true 否则我们在执行自动加载的部分
5)如果加载成功的话我们可以将这个类放到classMap数组当中,为了性能的考虑所以把它设置成静态变量存起来,因为是一个静态的属性我们要用到self来引入
6) 测试我们的类是否能调用成功 如果报错 那我们可以看一下路径是否拼对了7)这样我们就可以new \core不存在的类();
去触发spl_autoload_register();的方法当这个类不存在的时候我们可以让它去找自动加载的类,如果这个自动加载的类存在的话我们可以给他返回一个true 这样可以避免我们重复加载问题 否则将类转化一下 在include进来 这样自动加载类就完成了
自动加载的源码
<?php
namespace core;
class core
{
public static $classMap = array();
/**
* 启动框架
*/
static public function run()
{
p('ok');
$route = new \core\route();
}
/**
* 自动加载类库
*/
static public function load($class)
{
if (isset($classMap[$class])) {
return true;
} else {
$class = str_replace('\\', '/', $class);
$file = ROOT_PATH.'/'.$class.'.php';
if (is_file($file)) {
include $file;
self::$classMap[$class] = $class;
} else {
return false;
}
}
}
}