您的位置 首页 php

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

大家好,欢迎收看猿话!

3d90c88be0b744c2b4169ae040bffa78

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

56afc7ba0a294ee29576e9f52543010e

正因为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下载下来的组件可以自动加载到项目的关键。如果你打开文件,你会看到这一段代码,如下:

10ad810dd45b41f1958b7f8ddbe7e764

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

488bf1561a684dc888286a053bffe90f

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

d1a404a4f3614462a70800349336f39c

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

c477b845193e4cf7a682d37d4f79fd65

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/45051.shtml

关于作者: 智云科技

热门文章

网站地图