irstea/plantuml-bundle

一个生成代码的UML图的工具包。

2.0.0 2021-07-16 11:35 UTC

This package is auto-updated.

Last update: 2023-11-23 13:17:05 UTC


README

此包允许从PHP应用程序的源代码生成类图。

它同时使用PHP的反射APIDoctrine ORM的元数据。

渲染使用PlantUML进行。

安装

通过composer安装包

composer require --dev irstea/plantuml-bundle

在Symfony内核中列出包

// bundles en environnement dev et test
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
    // ...
    $bundles[] = new Irstea\PlantUmlBundle\IrsteaPlantUmlBundle();
    // ...
}

依赖项位于Debian的标准存储库中

sudo apt-get install default-jre-headless

可以从他们的网站下载PlantUML。

原理

该包允许生成多个不同的图,即多个不同的模型视图。必须在配置中描述这些视图。

对于每个图,包从一组起始类开始,它会分析、分组并装饰这些类。一些装饰器可以通过继承、关联等“发现”新类。

对于每个视图,需要定义

  • 如何找到起始类,
  • 哪些类要跟踪以及如何分组,
  • 哪些类要装饰。

这分别对应于每个图配置中的sourceslayoutdecoration部分。

注意:以点(.)开头的图将被忽略。这允许通过YAML锚点系统定义模型。

源代码

有两种方法可以找到要跟踪的类

  • entities:使用由entity_manager指定的管理器找到的实体。
  • classes:加载在directories列表中列出的目录中找到的所有类。

includeexclude部分允许细化选择。

布局

namespaces参数允许选择应使用哪种命名空间样式。

  • php:使用PHP命名空间。
  • flat:不使用命名空间。
  • bundles:按Symfony包分组类。
  • entities:按“别名” Doctrine 分组类。

includeexclude部分允许过滤要过滤和遍历的类。

装饰

装饰是在每个类上显示信息。一些装饰器在类中添加信息,其他装饰器添加与其他类的链接。没有装饰器,每个类只是一个带有名称的盒子,没有其他内容。

以下装饰器基于PHP的反射:

  • 继承:显示类的继承关系。
  • traits:显示对trait的使用。
  • 接口:显示接口的实现。
  • 属性:列出属性。
  • 方法:列出方法。

以下装饰器基于Doctrine的元数据;如果类不是实体,则忽略它们:

  • 实体:显示实体的类型。
  • 关联:显示实体的关联。
  • 字段:显示实体的字段定义(即列)。

包含(include)和排除(exclude)部分可以用来过滤哪些类将被装饰。

include/exclude 功能说明

这3个部分可以包含包含(include)和排除(exclude)部分,这允许通过命名空间或目录来过滤类。这些过滤器适用于目录/命名空间及其所有子级。

其工作原理如下:

  • 空或缺失的部分没有任何效果。
  • 如果有包含(include)部分,则只有列出的目录/命名空间将被接受。
  • 如果有排除(exclude)部分,则列出的目录/命名空间将被忽略。
  • 如果这两个部分都存在,一个类只有在被包含(include)部分验证并被排除(exclude)部分忽略时才会被接受。

用法

生成图表源代码

生成是通过一个单独的命令完成的,目前这个命令只是将文件发送到标准输出

app/console irstea:plantuml:generate mongraph >mongraph.puml

图形渲染

图形渲染使用 PlantUML 进行,例如,用于生成 SVG

app/console irstea:plantuml:render -o output_dir mongraph