组件

现代的 PHP 较少使用庞大的框架,而是更多地使用具有互操作性的专门组件制定解决方案。开发新 PHP 应用时,我很少直接使用 Laravel 或 Symfony,而是思考能把哪些现有的 PHP 组件结合在一起解决我的问题。

组件是什么?

组件是打包的代码,用于帮你解决 PHP 应用中某个具体的问题。严格来说,PHP 组件是一系列相关的类、接口和性状,用于解决某个具体问题。组件中的类、接口和性状通常放在同一个命名空间中。

我们应该使用组件还是框架呢?答案是,使用正确的工具做正确的事

如果是能通过一些 PHP 组件准确解决问题的小型项目,那就使用组件。组件非常便于查找并使用现有的工具,这样我们无需过多关注样板代码,有更多的时间处理手头上的大型任务。组件还有助于让代码保持轻量级和灵活性。这样我们只使用自己所需的代码,而且特别容易把一个组件换成另一个更适合项目的组件。

如果是有多个团队成员开发的大型项目,而且能从框架提供的约定、准则和结构中受益,那就使用框架。可是,框架会为我们做很多决定,而且要求我们遵守特殊的约定,大型框架很难集成自定义的库或第三方库,因为这些库之间没有使用相同的接口。框架的灵活性较低,不过较之使用一系列 PHP 组件,框架为我们提供了很多拿来即用的工具。如果不在意这些,框架是不二之选。使用框架能引导并加速项目的开发。

使用 PHP 组件

Packagist 是专门收集查找现代 PHP 组件的网站。

Awesome PHP 列出了很多优秀的 PHP 组件。

Composer 是安装 PHP 组件的工具。

安装 Composer

使用 curl 下载 Composer 的安装脚本,然后使用 php 执行安装脚本,最后在当前工作目录中创建 composer.phar 文件。composer.phar 文件是 Composer 的二进制文件。

// 下载安装
curl -sS https://getcomposer.org/installer | php
// 重命名 Composer 二进制文件,并将其移到 /usr/local/bin/composer
sudo mv composer.phar /usr/local/bin/composer
// 把 composer 变成可执行的二进制文件
sudo chmod +x /usr/local/bin/composer
// 在 ~/.bash_profile 文件中添加如下代码,把 /usr/local/bin 目录加入 PATH 环境变量中
PATH=/usr/local/bin:$PATH

// 安装组件:厂商名/包名
composer require guzzlehttp/guzzle

Composer 安装项目的依赖后,会创建一个 composer.lock 文件。这个文件会列出项目使用的所有 PHP 组件,以及组件的具体版本号(包括主版本号、次版本号和修订版本号)。如果有 composer.lock 文件,Composer 会下载这个文件中列出的具体版本,而不管 Packagist 中可用的最新版本是多少。composer.json 和 composer.lock 这两个文件都要纳入版本控制系统

composer install 命令不会安装比 composer.lock 列出的版本号新的版本。如果确实需要下载新版组件并更新 composer.lock 文件,要使用 composer update 命令。这个命令会把组件更新到最新稳定版,还会更新 composer.lock 文件,写入 PHP 组件的新版本号。

创建 PHP 组件

参照 PHP League 优秀的组件样板仓库。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *