创建 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-Fixer 的 CodeIgniter 代码规范 的代码规范修复器。
将 **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** 文件夹中的已知配置,可以使用 隐式注册器。
参考
我们发布了一些官方包。您可以在创建自己的包时使用这些包作为参考。