组件是一组打包的代码,是一系列相关的类、接口和Trait,用于帮助咱们解决PHP应用中某个具体问题。html
优秀的PHP组件具有如下特性:laravel
框架,从某种意义上来讲,Laravel也是个基于组件开发的框架(核心组件是自身的Illuminate库,功能实现上则大量依赖第三方组件)。json
应该使用组件仍是框架呢?composer
答案是,使用正确的工具作正确的事,若是能经过一些PHP组件快速实现小型项目,那就使用组件,若是有多个团队成员开发大型项目,并且能从框架提供的约定准则和结构中受益,那就使用框架。框架
Packagist查找PHP组件的社区。工具
Composer则是安装PHP组件的工具,是PHP的依赖管理器,运行在命令行中,只要告诉Composer须要哪些组件,Composer会下载并把这些组件自动加载到你的项目中。post
Composer和Packagist紧密合做,若是你告诉Composer想要使用 guzzlehttp/guzzle
组件,Composer会从Packagist中获取 guzzlehttp/guzzle
组件,找到这个组件的仓库地址,肯定要使用哪一个版本,还能找出这个组件的依赖,而后把 guzzlehttp/guzzle
组件及其依赖下载到你的项目中。此外,Composer会为项目中的全部PHP组件自动生成符合PSR标准的自动加载器,有效地抽象了依赖管理和自动加载。测试
Composer下载各个PHP组件时,会检查每一个组件的 composer.json
文件,肯定如何加载该组件,获得这个信息后,Composer会在本地为该组件建立一个符合PSR标准的自动加载器。这样咱们就能够实例化项目中的任何PHP组件,这些组件按需自动加载。spa
composer.lock
文件中会列出项目使用的全部PHP组件,以及组件的具体版本号,这实际上是锁定了项目,让项目只能使用具体版本的PHP组件。这样的好处是,composer会下载这个文件中列出的具体版本,而无论Packagist中可用的最新版本是多少。命令行
若是确实要下载最新版本的组件并更新composer.lock
,可使用composer update
命令。