您好,欢迎访问一九零五行业门户网

Composer 系列之 autoload 详解

下面由composer使用教程栏目为大家讲解composer系列之autoload文件,希望对需要的朋友有所帮助!
简介
composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
对于类库的自动加载,composer 生成了一个 vendor/autoload.php 文件。引入这个文件,就能得到一个免费的自动加载支持,这种感觉真是棒极了~
本文主要是介绍如何利用 composer 自带的自动加载机制,加载本地自定义的包(即不是来自于 packagist)。
使用
在 composer.json 文件中的 autoload 字段中添加自己的 autoloader。
目前 composer 支持四种自动加载映射的方式:
psr-0 autoloadingpsr-4 autoloadingclassmap generationfiles
下面只介绍 psr-4,为什么?因为它足够方便好用(当你添加类时不需要重新生成 autoloader)。详细请查看 自动加载 - 参考。
psr-4(推荐)
{ "autoload": { "psr-4": { "first\\": "src/", "temp\\": "lib/" } }}
上面的代码采用 psr-4 规范,该规范包含了 php 最新的自动加载标准,它要求必须使用 namespace (命名空间)的方式。
first\\ 表示命名空间,必须以 \\ 结尾,避免相似的命名空间导致冲突,若包含子命名空间,可以这样表示:first\\second\\。
src/ 表示命名空间所在目录为与 composer 的 vendor 目录同级的 src 目录,如下所示:
first/|---examples/ |---get.php|---src/ |---curl.php|---vendor/ |---composer/ |---autoload.php|---composer.json
如果需要在多个目录下搜索相同的命名前缀,可以用一个数组提供:
{ "autoload": { "psr-4": {"first\\": ["src/", "lib/"]} }}
修改完 composer.json 的 autoload 字段后需要更新一下 composer 的自动加载类:
composer dumpautoload -o
对应 curl.php 的命名空间如下表示:
<?phpnamespace first;class curl{}
引用 curl.php 的方式如下:
<?phprequire '../vendor/autoload.php';use first\curl;$curl = new curl();......
小结
之前一直以为 namespace 是 php 内置好的,只需要在某个类上声明一下某个命名空间,在调用这个类的地方 use 一下就好。。。
直到前几天脱离框架,单独写了几个类,然后被 xxx class not found 错误折磨到怀疑人生,才明白需要有个 autoloader 才行。
题外话
现在 composer 已经成为 php 的依赖管理标杆,多利用这个工具为自己的开发带来方便。
框架能大大减少开发成本,但有时候不利于个人技术的提升。在使用热门框架时,多看看框架的代码,不仅帮助自己理解掌握框架,也能带来许多编程思想和技术上的提高。
以上就是composer 系列之 autoload 详解的详细内容。
其它类似信息

推荐信息