写代码的 / cs_modular-monolith
模块化单体PHPCS标准。
0.9.5-beta
2020-12-30 15:17 UTC
Requires
- php: >=5.6
- ext-simplexml: *
- squizlabs/php_codesniffer: ^3.5
Requires (Dev)
- ext-json: *
- phpunit/phpunit: ^5
This package is auto-updated.
Last update: 2024-09-29 05:49:02 UTC
README
模块化单体PHPCS标准。 此包正在开发中。
为什么?
有三个很好的原因。
原因 1。
PHP 不支持 Java 类型的包。此标准是这个功能的自由版本(可选)。您可以在 CI/CD 流程中强制执行标准。
原因 2。
单体架构非常流行,但对于开发者来说却是个地狱。单体应用程序(迟早)通常被称为“遗留代码”。替代方案 - composer 包功能提供的隔离通常太强。语言级别的包系统提供了更灵活的模块实现。
原因 3。
具有类似功能的 Deptrac 没有集成到 Phpstorm 中。PHP_CodeSniffer 是。
所需依赖
- squizlabs/php_codesniffer 包
- php >= 5.6
- ext-simplexml
入门
步骤 1. 在您的项目中安装标准
$ composer require --dev writ3it/cs_modular-monolith
步骤 2. 创建或扩展您的 phpcs.xml.dist
如果您有其他规则集文件,请添加以下行
<config name="installed_paths" value="vendor/writ3it/cs_modular-monolith"/> <rule ref="ModularMonolith"> <properties> <property name="modules_definitions_path" value="modules.xml"/> </properties> </rule>
完整示例文件(Symfony)
<?xml version="1.0" encoding="UTF-8"?> <ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd"> <arg name="basepath" value="."/> <arg name="cache" value=".phpcs-cache"/> <arg name="colors"/> <arg name="extensions" value="php"/> <rule ref="PSR2"/> <rule ref="PSR12"/> <file>bin/</file> <file>config/</file> <file>public/</file> <file>src/</file> <file>tests/</file> <config name="installed_paths" value="vendor/writ3it/cs_modular-monolith"/> <rule ref="ModularMonolith"> <properties> <property name="modules_definitions_path" value="modules.xml"/> </properties> </rule> </ruleset>
步骤 3. 创建 modules.xml
modules.xml 描述了您的模块层次结构并限制模块接口为公共源代码。
示例文件
<?xml version='1.0' encoding='UTF-8'?> <modules> <module name="ModuleOne"> <source namespace="\App\ModuleOne\"/> <submodules> <module name="NestedModule"> <source namespace="\App\ModuleOne\NestedModule\"/> <public> <source namespace="\App\ModuleOne\NestedModule\Port\"/> </public> </module> </submodules> </module> <module name="ModuleTwo"> <source namespace="\App\ModuleTwo\"/> </module> </modules>
步骤 4.(CLI)测试您的代码!
在项目根目录中执行
./vendor/bin/phpcs
步骤 4.(PhpStorm)测试您的代码 实时!
待办事项
- 模块边界的验证。(MVP,1.0)
- 嵌套模块边界的验证。(MVP,1.0)
- 可以定义可通过边界访问的公共模块接口。(MVP,1.0)
- 用户体验改进。(MVP,1.0)
- 测试。(1.0)
- 文档。(1.0)
- 配置验证。(未来)
- 模块依赖网络图。(可能)
- 依赖路径长度的验证。(可能)
- 依赖循环的验证。(可能)
贡献
在首次发布之前,无法进行贡献,但请随意提交问题。
许可证
MIT 许可证,查看详情。