写代码的/cs_modular-monolith

模块化单体PHPCS标准。

安装: 5

依赖项: 0

建议者: 0

安全性: 0

星星: 1

观察者: 2

分支: 0

开放问题: 0

类型:phpcodesniffer-standard

0.9.5-beta 2020-12-30 15:17 UTC

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)测试您的代码 实时

查看 JetBrains 的说明。

待办事项

  • 模块边界的验证。(MVP,1.0)
  • 嵌套模块边界的验证。(MVP,1.0)
  • 可以定义可通过边界访问的公共模块接口。(MVP,1.0)
  • 用户体验改进。(MVP,1.0)
  • 测试。(1.0)
  • 文档。(1.0)
  • 配置验证。(未来)
  • 模块依赖网络图。(可能)
  • 依赖路径长度的验证。(可能)
  • 依赖循环的验证。(可能)

贡献

在首次发布之前,无法进行贡献,但请随意提交问题。

许可证

MIT 许可证,查看详情。