创建 PHP Composer 包并使用的操作指南

简介

Composer 包是 PHP 源码文件的集合,使用 Composer 包可以方便的使用他人已经开发好的实现特定功能的 PHP 源码,避免重复造轮子。并且,我们也可以创建自己的 Composer 包,给他人或自己在项目中提供便利,在实际的使用过程中,也更加容易持续完善 Composer 包。

注意:根据 Composer 官方文档的介绍,Composer 不是一个包管理器(not a package manager),而只是用做依赖管理(dependency manager)。

初始化扩展包

先创建一个空目录,再在空目录里执行 Composer 自带的 init 命令,自动生成 Composer 的配置文件(composer.json)。

$ mkdir composer_test
$ cd composer_test
$ composer init

请注意:Minimum Stability(官方说明) 要输入 dev,表明我们的扩展包最小稳定版的开发版。否则 Composer 的默认 Minimum Stability 是 stable,扩展包需要打上版本号才能被 Composer 认为是稳定版(stable),前期开发调试时简单点处理,设置为 dev,这样引入开发中的 Composer 扩展包时不需要去管什么版本号,等开发调试过了再说。

type 字段的官方说明。
version 字段的官方说明。

包的环境要求和自动加载规范

环境要求通过 composer.json 里的 require 字段来限制。

自动加载规范通过 autoload 字段来定义。

现在假定需要 PHP 的版本大于等于 7.0.0,并且当前包的 src 目录下的文件以 Yxz\ComposerTest 命令空间来加载,在 composer.json 中增加以下代码:

"require": {
  "php": ">=7.0"
},
"autoload": {
  "psr-4": {
    "Yxz\\ComposerTest\\": "src"
  }
}

如果需要引入其他的非 PSR-4 规范的源码文件,可能会需要用到 autoload 下的 file(官方说明) 字段,每一次请求 PHP 时都是包含这些文件。

例如要包含钉钉 SDK 的代码,可以在 composer.json 中增加以下代码:

"autoload": {
  "files": [
    "lib/taobao-sdk-PHP/TopSdk.php"
  ]
}

扩展包里创建类文件

src 目录下新建 Calc.php 文件,内容如下:

<?php

namespace Yxz\ComposerTest;

class Calc
{
    // 计算平方值
    public function square($val)
    {
        return $val * $val;
    }
}

在项目中引入本地的扩展包

项目要引入本地目录的扩展包,先要在 composer.json 文件中加入以下内容:

"repositories": [
    {
        "type": "path",
        "url": "/home/yxz/samba_share/project/composer_test"
    }
]

然后在项目目录下执行 Composer 命令:

composer require yxz/composer_test:@dev

或者

composer require yxz/composer_test:dev-master

注意:上面命令中的 yxz/composer_test 就是 Composer 扩展包里 composer.json 的 name 字段值。@dev 或 dev-master 表示引入的扩展包是主分支的最新版,当还未将扩展包提交到 Github 仓库或者发布到 Packagist 上时,一般这样引入扩展包。

Composer 会输出下面内容,表示已与本地的扩展包目录建立了超链接(当直接修改扩展包目录里的源码时,项目里可以直接看到效果):

测试项目中引入的本地扩展包

新建测试 PHP 文件:

<?php
$calc = new \Yxz\ComposerTest\Calc();
echo $calc->square('12');

终端或者浏览器访问这个 PHP 文件,会看见输出 144:

谢谢阅读。

参考文章:
学习开发自己的 Composer 包,并使用 GitHub 实时更新到 Packagist | Laravel China 社区
Composer 包开发居然这么简单 - 掘金
PHP回顾之创建自己的Composer包 - 掘金

posted @ 2020-08-28 15:31  imzhi  阅读(2188)  评论(0)    收藏  举报