您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

「PHP编程」为什么使用composer下载的包,不需要再include?

时间:2020-07-16 10:10:25  来源:  作者:

大家好,欢迎收看猿话!

「PHP编程」为什么使用composer下载的包,不需要再include?

 

Composer是 php 用来管理依赖(dependency)关系的工具,类似NodeJs中的npm、Ruby中的bundler。使用Composer,你可以在自己的项目根目录的composer.json中声明所依赖的外部工具库(libraries),然后在composer.json文件所在目录执行composer install命令,Composer 就会帮你安装这些依赖的库文件。如下:

「PHP编程」为什么使用composer下载的包,不需要再include?

 

正因为Composer的这个优点,由于现在很多框架都支持使用composer进行组件管理,如ThinkPHP、Laravel等。

那为什么使用Composer下载的组件,就可以自动加载到项目中,而不需要再手动include呢?

这主要得益于PHP的自动加载功能。

什么是自动加载?

自动加载是PHP从5.0开始支持的一个功能,也就是当我们实例化一个不存在的类时,PHP会尝试调用自动加载机制引入相应的类文件。

PHP自动加载机制有两种方式,一种是通过__autoload(),另一种是通过spl_autoload_register()。PHP官方推荐使用第二种方式,因为第二种方式可以多次调用,更灵活,而且从PHP7.2开始,第一种方式也不再支持了。

当我们在composer.json文件所在目录,执行composer install命令后,composer会创建vendor目录,并将composer.json文件中,require字段指定的依赖组件,下载下来放置其中,同时还生成一个autoload.php文件。

这里的autoload.php是使用composer下载下来的组件可以自动加载到项目的关键。如果你打开文件,你会看到这一段代码,如下:

「PHP编程」为什么使用composer下载的包,不需要再include?

 

这里表示使用Composer工具下载的组件,由composer组件来负责自动加载。

「PHP编程」为什么使用composer下载的包,不需要再include?

 

打开ComposerAutoloaderInita224064b63645c6fcb9c9a314d8b5a82类文件,你可以看到,如前面说的一样,composer组件控制自动加载的核心代码,使用spl_autoload_register()方法来注册自动加载函数,实现文件的自动加载。

「PHP编程」为什么使用composer下载的包,不需要再include?

 

所以,要想项目中可以直接使用composer工具下载的依赖包,你只需要在项目中加载vendor/autoload.php文件即可,如下:

「PHP编程」为什么使用composer下载的包,不需要再include?


Tags:PHP编程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
安装开发环境是每个开发人员的必修课,也是新工作的开端。LAMP、LNMP、WAMP是PHP开发常用的几种开发环境,L代表Linux,A代表Apache、M代表MySQL、W代表Window、P代表PHP。安装...【详细内容】
2020-08-13  Tags: PHP编程  点击:(76)  评论:(0)  加入收藏
大家好,欢迎收看猿话! Composer是 PHP 用来管理依赖(dependency)关系的工具,类似NodeJs中的npm、Ruby中的bundler。使用Composer,你可以在自己的项目根目录的composer.json中声明...【详细内容】
2020-07-16  Tags: PHP编程  点击:(66)  评论:(0)  加入收藏
PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。目前已表决通过了 6 套标准,已经得到大部分 PHP 框架的支持和认可。 PS...【详细内容】
2019-09-25  Tags: PHP编程  点击:(254)  评论:(0)  加入收藏
在常规PHP项目中需要使用的工具,本人常用工具:一、远程连接工具1.FinalShellhttp://www.hostbuf.com/t/988.html2.PuTTYhttps://www.chiark.greenend.org.uk/~sgtatham/putty...【详细内容】
2019-09-07  Tags: PHP编程  点击:(288)  评论:(0)  加入收藏
说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。/** * @version: V1.0 * @author: pmdream * @classNa...【详细内容】
2019-09-06  Tags: PHP编程  点击:(307)  评论:(0)  加入收藏
▌简易百科推荐
1. 前言了解响应式编程,首先我们需要了解函数式操作和Stream的操作,下面我们简单的复习一下喽。1.1 常用函数式编程函数式接口中我们先来回顾一下Java中的函数式接口。常见的...【详细内容】
2022-07-15  二哥学Java    Tags:编程   点击:(1)  评论:(0)  加入收藏
在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastify 构建一个 Full-stack 应用程序。在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastif...【详细内容】
2022-07-12  qaseven    Tags:全栈   点击:(9)  评论:(0)  加入收藏
好的软件开发网站有哪些?做软件开发哪些网站能提供帮助呢?这些很多做软件开发的小伙伴都会问到的问题。007出海全球社交流量导航网站,整合了多方出海跨境网站资源,为你介绍出海...【详细内容】
2022-07-08  Chuhai007    Tags:软件开发   点击:(10)  评论:(0)  加入收藏
我们用monkey做压力测试后,会保存一个monkey日志,那如果想快速的分析日志中有哪些异常,我们可以用批处理工具进行快速的筛查,我们一起来看看吧。先编写个小脚本,然后修改为bat后...【详细内容】
2022-07-08  溪流涌动    Tags:monkey   点击:(13)  评论:(0)  加入收藏
白盒测试落地实践分为两个大方向,一个是静态分析,一个是动态分析,当然啦,也可以叫做静态测试和动态测试。那我们如何高质量保效率的做好白盒测试呢?Parasoft已经为您准备好了成熟...【详细内容】
2022-07-08  Parasoft中国    Tags:白盒测试   点击:(11)  评论:(0)  加入收藏
Altium Designer 自带脚本功能的开发项目,可以调用官方AD API接口对原理图或者PCB进行自动操作,本文主要分享开发的流程,和一些基本的概念信息,本文介绍的脚本工具例子可以用在P...【详细内容】
2022-07-07  电子工程师伟哥    Tags:Altium Designer   点击:(21)  评论:(0)  加入收藏
一、目录介绍 前置知识点 NIO Netty 的核心组件 Channel Callback Future 和 Promise 事件和 ChannelHandler Hello World二、前置知识点1、NIO首先我们需要回顾一...【详细内容】
2022-07-06  架构师jickly    Tags:聊天系统   点击:(16)  评论:(0)  加入收藏
1.事件流事件流是对事件执行过程的描述,了解事件的执行过程有助于加深对事件的理解,提升开发实践中对事件运用的灵活度。2.捕获和冒泡捕获阶段是【从父到子】的传导过程,冒泡阶...【详细内容】
2022-07-06  金乾坤    Tags:API   点击:(13)  评论:(0)  加入收藏
刷盘策略CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略:public class CommitLog { public CompletableFuture<PutMe...【详细内容】
2022-07-06  Java码农之路    Tags:RocketMQ   点击:(16)  评论:(0)  加入收藏
最近读了本好书-《深度学习推荐系统》,读完不觉全身通畅,于是就有了写这篇文章的想法,把自己的理解和总结分享给大家。 本文将按照从算法到工程的顺序,先介绍一下推荐系统整体...【详细内容】
2022-07-05  InfoQ    Tags:推荐系统   点击:(22)  评论:(0)  加入收藏
站内最新
站内热门
站内头条