创建 Composer 包

您可以将您创建的 代码模块 变成 Composer 包,或者可以为 CodeIgniter 4 创建一个 Composer 包。

文件夹结构

这是一个 Composer 包的典型目录结构

your-package-name/
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── composer.json
├── src/
│   └── YourClass.php
└── tests/
    └── YourClassTest.php

创建 composer.json

在您的包目录的根目录中,创建一个 **composer.json** 文件。此文件定义有关您的包及其依赖项的元数据。

composer init 命令可以帮助您创建它。

例如,**composer.json** 可能看起来像这样

{
    "name": "your-vendor/your-package",
    "description": "Your package description",
    "type": "library",
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "YourVendor\\YourPackage\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Your Name",
            "email": "[email protected]"
        }
    ],
    "require": {
        // Any dependencies required by your package go here
    },
    "require-dev": {
        // Any development dependencies (e.g., PHPUnit) go here
    }
}

包名

name 字段在这里很重要。包名通常以“vendor-name/package-name”的格式编写,全部小写。这是一个常见的示例

  • your-vendor-name: 用于识别供应商(包的创建者)的名称,例如您的姓名或您的组织。

  • your-package-name: 您正在创建的包的名称。

因此,为其命名一个独特的名称以区别于其他包非常重要。在发布时,唯一性尤其重要。

命名空间

然后,包名称将在 autoload.psr4 中确定供应商命名空间。

如果您的包名称是 your-vendor/your-package,则供应商命名空间必须是 YourVendor。因此,您将像以下示例一样编写

"autoload": {
    "psr-4": {
        "YourVendor\\YourPackage\\": "src/"
    }
},

此设置指示 Composer 自动加载您的包的源代码。

选择许可证

如果您不熟悉开源许可证,请参阅 https://choosealicense.com/。许多 PHP 包(包括 CodeIgniter)使用 MIT 许可证。

准备开发工具

有许多工具可以帮助确保代码质量。因此,您应该使用它们。您可以使用 CodeIgniter DevKit 轻松安装和配置这些工具。

安装 DevKit

在您的包目录的根目录中,运行以下命令

composer config minimum-stability dev
composer config prefer-stable true
composer require --dev codeigniter4/devkit

DevKit 安装了各种 Composer 包,这些包有助于您的开发,并在 vendor/codeigniter4/devkit/src/Template 中安装了它们的模板。将其中的文件复制到您的项目根文件夹中,并根据您的需要进行编辑。

配置编码标准修复器

DevKit 提供了基于 PHP-CS-FixerCodeIgniter 代码规范 的代码规范修复器。

将 **vendor/codeigniter4/devkit/src/Template/.php-cs-fixer.dist.php** 复制到您的项目根目录。

为缓存文件创建 **build** 文件夹。

your-package-name/
├── .php-cs-fixer.dist.php
├── build/

在您的编辑器中打开 **.php-cs-fixer.dist.php**,并修复文件夹路径。

--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -7,7 +7,7 @@ use PhpCsFixer\Finder;
 $finder = Finder::create()
     ->files()
     ->in([
-        __DIR__ . '/app/',
+        __DIR__ . '/src/',
         __DIR__ . '/tests/',
     ])
     ->exclude([

就是这样。现在您可以运行代码规范修复器。

vendor/bin/php-cs-fixer fix --ansi --verbose --diff

如果您在 **composer.json** 中添加了 scripts.cs-fix,您可以使用 composer cs-fix 命令运行它。

{
    // ...
    },
    "scripts": {
        "cs-fix": "php-cs-fixer fix --ansi --verbose --diff"
    }
}

配置文件

允许用户覆盖设置

如果您的包有一个配置文件,并且您希望用户能够覆盖设置,请使用 config() 以及简短的类名,例如 config('YourConfig') 来调用配置文件。

然后,用户可以通过在 **app/Config** 中放置一个具有相同简短类名的配置类来覆盖包配置,该类扩展了包配置类,例如 YourVendor\YourPackage\Config\YourConfig

覆盖 app/Config 中的设置

如果您需要覆盖或添加到 **app/Config** 文件夹中的已知配置,可以使用 隐式注册器

参考

我们发布了一些官方包。您可以在创建自己的包时使用这些包作为参考。