<返回更多

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

2020-07-16    
加入收藏

大家好,欢迎收看猿话!

「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?
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>