大家好,欢迎收看猿话!
文章插图
【「PHP编程」为什么使用composer下载的包,不需要再include?】
Composer是 php 用来管理依赖(dependency)关系的工具,类似NodeJs中的npm、Ruby中的bundler 。使用Composer,你可以在自己的项目根目录的composer.json中声明所依赖的外部工具库(libraries),然后在composer.json文件所在目录执行composer install命令,Composer 就会帮你安装这些依赖的库文件 。如下:
文章插图
正因为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下载下来的组件可以自动加载到项目的关键 。如果你打开文件,你会看到这一段代码,如下:
文章插图
这里表示使用Composer工具下载的组件,由composer组件来负责自动加载 。
文章插图
打开ComposerAutoloaderInita224064b63645c6fcb9c9a314d8b5a82类文件,你可以看到,如前面说的一样,composer组件控制自动加载的核心代码,使用spl_autoload_register()方法来注册自动加载函数,实现文件的自动加载 。
文章插图
所以,要想项目中可以直接使用composer工具下载的依赖包,你只需要在项目中加载vendor/autoload.php文件即可,如下:
文章插图
推荐阅读
- 「系统架构」我知道有OOP,但不知道竟然还有AOP
- Java并发编程框架Disruptor
- 招聘|传说中的「职场黑名单」,到底长啥样
- C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?
- PHP 空对象怎么用,3个例子教会你
- 微软停止支持 PHP 8.0、PHP宇宙最强怎么办?
- 2020 年 7 月编程语言排行榜
- 网络编程——协议基础
- Spring Boot读取配置文件的几种方式「值得收藏」
- 17条嵌入式C语言编程小知识,需要知道