## spl_autoload_register 作用演示
![](https://img.kancloud.cn/51/28/512853ff3d3e6f67c0c1fbea501ace68_791x224.png)
![](https://img.kancloud.cn/e4/3c/e43c3e7c38567db72e6b0c33d5ddd53b_377x61.png)
`spl_autoload_register`: 如果类找不到,将会调用此函数。
可以看到,他调用了`spl_autoload_register` 函数。
## 其他语言
`go` `python` `js`...... 那些,天天 `import`。
累不累? 果然 `php` 是世界上最好...
## 自己实现自动加载
```
spl_autoload_register(function($class){
// $class 是App\User
$psr4 = [
"App" => "app"
];
$suffix = '.php'; // 后缀
foreach($psr4 as $name => $value) // 如果是psr4替换
$class = str_replace($name,$value,$class);
// $class 现在是 app\User
include($class . $suffix);
});
```
![](https://img.kancloud.cn/85/2a/852afb3e3b890d76318501f526c607b2_1113x508.png)
## 结尾
`php` 自动加载 = `spl_autoload_register` + `include`。
推荐用 `composer` 官方 `自动加载`,自己实现: 毕竟是野路子,没有那么完善。
用官方很简单,官方的`autoload.php`已实现了 `自动加载` ,都是一样的原理。
```
require __DIR__.'/../vendor/autoload.php'
```
- 前言
- 基础篇
- 1. 第一步 创建框架目录结构
- 2. 引入composer自动加载
- 3. php自动加载 (解释篇)
- 4. 创建容器 注册树模式
- 5. 关于psr规范解释
- 6. 关于"容器" "契约" "依赖注入" (解释篇)
- 7. 添加函数文件helpers.php
- 8. 初始化请求(Request)
- 9. 响应 (Response)
- 10. 路由一 (路由组实现)
- 11. 路由二 (加入中间件)
- 12. 配置信息 (类似laravel)
- 13. 数据库连接 (多例模式)
- 14. 查询构造器 (query builder)
- MVC实现
- M 模型实现 (数据映射 + 原型 模式)
- C 控制器实现 + 控制器中间件
- V 视图实现 (Laravel Blade 引擎)
- V 视图切换成 ThinkPhp 模板 引擎)
- 其他轮子
- 日志
- 自定义异常 (异常托管)
- 单元测试 (phpunit)
- 替换成swoole的http服务器
- 协程上下文解决request问题
- qps测试
- 发布到packagist.org