## 自研框架基础-自动加载
php 的依赖管理 composer 已经发展多年,关于 composer 的具体使用方法和中国镜像问题参考 [文档]()。关于依赖,我是非常讨厌 nodejs 那种,动不动依赖就上百个,什么都依赖别人的,总是感觉不靠谱、不可控。但 composer 除了依赖管理,还提供自动加载机制,如果不用 composer,自动加载的话还需要自己写一个自动加载的函数如 `spl_autoload_register`, 根据路径来分析出文件地址,然后 include 进来。php 都发展到 7.4 了,还手动管理 include,或者不用 namespace,未免太落伍了。
#### 自动加载机制
框架的 composer.json
```json
"autoload": {
"psr-4": {
"NonePHP\\": "src/"
},
"files": ["src/function.php"]
}
```
其中 psr-4 项指定命名空间和路径的关系,上面的例子就指定了当前目录下的 src 子目录,就是 namespace NonePHP\ 的根路径,再往里的子目录,只需要 NonePHP\xxx (xxx 为 src 的
子目录)即可找到并引入文件。
files 项指定就要自动加载的文件,用来包含一些常用的函数,这些全局函数无需命名空间即可使用
Demo 项目的 composer.json
```json
"autoload": {
"psr-4": {
"NonePHP\\": "../NonePHP/src/",
"Demo\\": "./app"
},
"files": ["../NonePHP/src/function.php"]
}
```
因为是开发环境,所以框架引入直接根据 autoload 加载进来,如果开发完成,可以通过 require 的方式直接引入框架代码。
有了 composer.json , 只需要` composer install `之后, 在入口文件 index.php 中 `include './vendor/autoload.php' `即可
#### Demo 项目目录
Demo 的项目主要目录是 ./app , 包含 `Demo\\*` 的命名空间的所有代码,也是主要代码,其他还有
```bash
- NonePHP_demo
- app // app 主要代码目录
- config // 配置相关
- public // 入口文件,静态文件等
- storage // 缓存文件,db 文件等
.env
composer.json
```
本文总阅读量次
本站总访问量次
本站访客数人次