多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 在composer.json有一个autoload字段就是来帮助我们实现自动加载的,其可以根据以下的4种定义方式来实现自动加载: * file * classmap * PSR-4 * PSR-0 其中PSR-0和PSR-4是php编码标准.如果不清楚这个是什么东西的话, 可执行google.由于这里PSR-0标准已经不被推荐,所以我们下面介绍一下其他三种方式的使用. # PSR-4 假设我们现在有如下的目录结构: ~~~ your_project_root_dir/ app/ appTest1.php sub/ appTest2.php vendor/ composer.json ~~~ 这么一来,根据PSR-4的标准, appTest1.php的命名空间应该是App,而appTest2.php的命名空间为Appsub. 在composer.json添加如下代码: ~~~ "autoload":{ "psr-4":{ "App//":"app/" }, } ~~~ 其中autoload表明了这是为了实现自动加载.而psr-4说明了我们这里使用PSR-4的自动加载规范.`"App//":"app/"`表示App这个命名空间对应到app这个目录下.这个时候我们执行composer命令`composer dumpautoload -o` 执行完毕之后还是在index.php加上`require_once __DIR__ . '/vendor/autoload.php'`,之后我们就可以直接使用app目录下的类而不用考虑自动加载的问题了, 因为composer都帮我们处理好了. # files&&classmap 当我们的目录结构不符合PSR-4标准的时候,我们也可以使用这两种方式来添加自动依赖.这两种方式使用起来就相当简单了. ~~~ "autoload":{ "files":["src/test.php"], "psr-4":{ "App//":"app/" }, "classmap":["lib/"] } ~~~ 如上.files节点上添加src/test.php,那么composer就会自动为你加载这个文件,使用classmap则会为你加载lib/目录下的所有文件.修改完autoload的内容之后要记得执行composer dumpautoload -o来重新生成加载文件.