richcongress / bundle-toolbox
一套用于快速构建捆绑包的类和工具集
Requires
- php: ^8.1
- symfony/config: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
Requires (Dev)
- doctrine/doctrine-bundle: ^2.6
- doctrine/doctrine-migrations-bundle: ^2.0 || ^3.0
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-03 09:59:24 UTC
README
本捆绑包版本需要 Symfony 6.0+ 和 PHP 8.1+。
捆绑包工具箱提供了一套抽象类和工具,以避免在捆绑包之间出现代码冗余。
安装
创建一个新的捆绑包,并将此捆绑包作为依赖项添加。
composer require richcongress/bundle-toolbox
快速开始
配置
在创建新的配置时,使用 AbstractConfiguration
,正确设置 CONFIG_NODE
常量,并设置 buildConfiguration
函数。该参数是您配置的根节点。
class Configuration extends AbstractConfiguration { public const CONFIG_NODE = 'bundle_toolbox_test'; protected function buildConfiguration(ArrayNodeDefinition $rootNode): void { $rootNode ->children() ->booleanNode('test')->defaultFalse()->end() ->end(); } }
从您的捆绑包中,您可以使用 get
静态函数快速检索捆绑包配置。
$this->specificConfiguration = Configuration::get($parameterBag, 'your_sub_configuration');
扩展
在创建扩展时,从 AbstractExtension
继承。现在您有一个新的函数可用,即 parseConfiguration
,它处理配置并将其加载到容器中的 ParameterBag。
class BundleExtension extends AbstractExtension { public function load(array $configs, ContainerBuilder $container): void { $this->parseConfiguration($container, new Configuration(), $configs); } }
编译器通过
在创建新的编译器通过时,使用 AbstractCompilerPass
并从您的捆绑包的 build()
函数中添加它们。
public function build(ContainerBuilder $container): void { CompilerPass::add($container); }
您还可以使用常数 TYPE
和 PRIORITY
分别配置其类型和优先级。
您可以使用 MANDATORY_SERVICES
常量快速检查所需的服务的存在性。
public const MANDATORY_SERVICES = ['service1', 'service2', 'service3']; public function process(ContainerBuilder $container): void { if (!self::checkMandatoryServices($container)) { return; } // ... }
捆绑包
在创建新的捆绑包时,使用 AbstractBundle
。如果您想添加编译器通过,只需将其添加到 COMPILER_PASSES
常量中。如果编译器是 AbstractCompilerPass
的实例,它将使用 add
方法。如果不是,它将使用默认值添加到容器中。
版本管理
捆绑包工具箱遵循 语义版本控制。简而言之,该方案是 MAJOR.MINOR.PATCH,其中
- MAJOR 在出现破坏性更改时增加,
- MINOR 在向后兼容的方式中添加新功能时增加,
- PATCH 在向后兼容的方式中修复错误时增加。
版本低于 1.0.0 的版本被视为实验性版本,任何时间都可能发生破坏性更改。
贡献
欢迎贡献!有许多贡献方式,我们感谢所有方式。以下是一些主要的贡献方式
- 错误报告:虽然我们力求提供高质量的软件,但错误可能会发生,我们无法修复我们不知道的问题。因此,即使您不确定或只想提问,也请报告。无论如何,问题可能表明文档还可以进一步改进!
- 功能请求:您的用例没有被当前的 API 覆盖?希望建议更改或添加某些内容?我们将很乐意阅读并开始讨论,以尝试找到最佳可能的解决方案。
- 代码请求:想贡献代码或文档?我们非常欢迎!如果您需要帮助开始,请查阅GitHub关于代码请求的文档。我们使用“Fork and Pull模式”,即贡献者将更改推送到他们个人的Fork,然后创建向主存储库的pull请求。请将您的代码请求针对
master
分支。
提醒一下,所有贡献者都应遵守我们的行为准则。
黑客攻击
您可能需要使用Docker和docker-compose
来修改项目。查看以下命令。
# Start the project docker-compose up -d # Install dependencies docker-compose exec application composer install # Run tests docker-compose exec application bin/phpunit # Run a bash within the container docker-compose exec application bash
6. 许可证
捆绑工具箱在MIT许可证的条款下分发。
有关详细信息,请参阅LICENSE。