tp5中的composer自动加载
今天需要用到http请求数据,于是使用composer装了一个GuzzleHttp:
composer require guzzlehttp/guzzle
装完后直接把在laravel的代码直接拷过来了,发现报错,以为是tp5中的composer.json没配置好的原因,但随后发现是没use,-_-||,use之后发现竟然可以直接使用了,感觉很神奇,于是稍微看了下Tp5的源码:
首先是index.php入口文件:
引用了一个base.php:
base.php中有个register方法,专门用于注册自动加载,而在该方法中有这么一句:
于是查看registerComposerLoader方法:
这时候你打开autoload_psr4.php就可以看到刚才引入的类库的 命名空间=>文件夹位置 的数组:
而文件位置关系如下图:
这里的src对应上面数组的GuzzleHttp命名空间,GuzzleHttp\\ 就是GuzzleHttp\ 的意思,第一个 \ 表示转义。
到这里基本上就一目了然了,Tp5直接引用了vendor/composer/ 下的composer自动加载文件,加载到Tp5中去,这样你在使用用composer安装的类时只要使用对应的命名空间就可以使用了,当使用命名空间时Tp5会从已加载的命名空间数组找到对应命名空间的文件夹位置,然后在该文件夹下寻找需要的类、方法。