使用PSR-4配合composer autoload 自动加载文件夹
使用PSR-4配合composer autoload 自动加载文件夹
require 文件很麻烦,使用PSR-4搭配composer一次加载,终生受用。 感觉类似java中的import了,自己先记录一下最近理解的。 用composer管理自己的包吧
安装composer
PSR-4规范
构建项目目录
-project -src -View.php -app -Tools.php -composer.json
上面路径的View.php在project/src/View.php 中,其他同理,View 和 Tools 只是为了做演示用的。
构建composer.json
打开创建的composer.json文件输入,这里拿monolog做例子。
1 | { |
用composer加载包
在目录所在的命令行中输入
1 | #linux全局安装下使用该命令 |
加载完毕之后你的目录应该是这样的 -project -src -View.php -app -Tools.php -vendor -composer/* composer目录下面的文件不在赘述 -monolog/* 同理 -autoload.php -composer.json -composer.lock
测试加载的monolog包
在project目录下创建一个index.php
1 | #index.php |
在浏览器里面访问该文件地址,通常应该是http://127.0.0.1/project/index.php
看到页面success
之后,然后再查看project文件夹下面是不是多了一个app.log文件。那么恭喜你成功使用了composer加载包,并且使用该加载的包输出了log日志。
使用PSR-4加载文件
1.编辑composer.json 配置加载目录和空间名
编辑刚才的composer.json文件,添加autoload模块。
1 | { |
其中Acme\\:"src\"
表示,将Acme这么空间名绑定到/project/src
这个目录下 然后修改project/src/View.php
文件
1 | #View.php |
继续返回修改/project/index.php
1 | #index.php |
修改完毕之后返回命令行运行
1 | #使用这个命令会自动生成autoload的文件 |
PS:需要注意一下!
1 | #生成环境下使用 |
最后打开http://127.0.0.1/project/index.php
如果显示get view 那么,恭喜你配置成功了。
拓展
接下来你就可以继续在src
目录下面创建比如Tools.php
然后不需要做其他require,便可以直接使用了。非常的方便,可以自己尝试一下。
总结
查看vender下的autoload.php文件你会看到,他其实是return了一个ComposerAutoloaderInitaa62b39f628dda129dc5b4ebdfb2b2ae::getLoader();
1 | #autoload.php |
而这个getLoader()
方法做了如下几件事 1.找 Composer\ClassLoader 如果不存在就是生成一个实例放在ComposerAutoloaderInitaa62b39f628dda129dc5b4ebdfb2b2ae 中 2.将 composer cli 生成的各种 autoload_psr4, autoload_classmap, autoload_namespaces(psr-0) 全都注册到 Composer\ClassLoader 中。 3.直接 require 所有在 autoload_files 中的文件