Composer 系列之 autoload 详解

发布时间 - 2019-08-21 00:00:00    点击率:

下面由composer使用教程栏目为大家讲解composer系列之autoload文件,希望对需要的朋友有所帮助!

简介

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

对于类库的自动加载,Composer 生成了一个 vendor/autoload.php 文件。引入这个文件,就能得到一个免费的自动加载支持,这种感觉真是棒极了~

本文主要是介绍如何利用 Composer 自带的自动加载机制,加载本地自定义的包(即不是来自于 packagist)。

使用

在 composer.json 文件中的 autoload 字段中添加自己的 autoloader。

目前 Composer 支持四种自动加载映射的方式:

PSR-0 autoloading
PSR-4 autoloading
classmap generation
files

下面只介绍 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 的命名空间如下表示:

引用 Curl.php 的方式如下:

小结

之前一直以为 namespace 是 PHP 内置好的,只需要在某个类上声明一下某个命名空间,在调用这个类的地方 use 一下就好。。。

直到前几天脱离框架,单独写了几个类,然后被 xxx class not found 错误折磨到怀疑人生,才明白需要有个 autoloader 才行。

题外话

现在 Composer 已经成为 PHP 的依赖管理标杆,多利用这个工具为自己的开发带来方便。

框架能大大减少开发成本,但有时候不利于个人技术的提升。在使用热门框架时,多看看框架的代码,不仅帮助自己理解掌握框架,也能带来许多编程思想和技术上的提高。


# composer  # php  # json  # 命名空间  # cURL  # class  # Namespace  # 自动加载  # 自己的  # 几个  # 有个  # 就能  # 多个  # 不需要  # 为你  # 就好  # 也能 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel如何使用Livewire构建动态组件?(入门代码)  南京网站制作费用,南京远驱官方网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  清除minerd进程的简单方法  如何正确下载安装西数主机建站助手?  如何在IIS中配置站点IP、端口及主机头?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  英语简历制作免费网站推荐,如何将简历翻译成英文?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何用PHP快速搭建CMS系统?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在自有机房高效搭建专业网站?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何在宝塔面板中修改默认建站目录?  Python文件异常处理策略_健壮性说明【指导】  如何在万网利用已有域名快速建站?  详解Android中Activity的四大启动模式实验简述  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何快速查询网站的真实建站时间?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  高防服务器租用首荐平台,企业级优惠套餐快速部署  深圳网站制作培训,深圳哪些招聘网站比较好?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何快速配置高效服务器建站软件?  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何基于云服务器快速搭建个人网站?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何快速搭建高效可靠的建站解决方案?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何快速登录WAP自助建站平台?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  如何确保西部建站助手FTP传输的安全性?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  使用spring连接及操作mongodb3.0实例  EditPlus中的正则表达式 实战(1)