irstea / plantuml-bundle
一个生成代码的UML图的工具包。
Requires
- php: ^7.1
- ext-json: *
- doctrine/doctrine-bundle: ^1.6 || ^2.0
- doctrine/orm: ^2.5
- psr/container: ^1.0
- symfony/config: ^3.0 || ^4.0
- symfony/console: ^3.0 || ^4.0
- symfony/dependency-injection: ^3.0 || ^4.0
- symfony/filesystem: ^3.0 || ^4.0
- symfony/finder: ^3.0 || ^4.0
- symfony/framework-bundle: ^3.0 || ^4.0
- symfony/http-kernel: ^3.0 || ^4.0
- symfony/process: ^3.0 || ^4.0
- symfony/security: ^3.0 || ^4.0
- webmozart/path-util: ^2.3
Requires (Dev)
- irstea/dev-pack: @stable
- irstea/phpstan-config: >=1.0.2
- phpmd/phpmd: >=2.8
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2023-11-23 13:17:05 UTC
README
此包允许从PHP应用程序的源代码生成类图。
它同时使用PHP的反射API和Doctrine 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。
原理
该包允许生成多个不同的图,即多个不同的模型视图。必须在配置中描述这些视图。
对于每个图,包从一组起始类开始,它会分析、分组并装饰这些类。一些装饰器可以通过继承、关联等“发现”新类。
对于每个视图,需要定义
- 如何找到起始类,
- 哪些类要跟踪以及如何分组,
- 哪些类要装饰。
这分别对应于每个图配置中的sources
、layout
和decoration
部分。
注意:以点(.
)开头的图将被忽略。这允许通过YAML锚点系统定义模型。
源代码
有两种方法可以找到要跟踪的类
entities
:使用由entity_manager
指定的管理器找到的实体。classes
:加载在directories
列表中列出的目录中找到的所有类。
include
或exclude
部分允许细化选择。
布局
namespaces
参数允许选择应使用哪种命名空间样式。
php
:使用PHP命名空间。flat
:不使用命名空间。bundles
:按Symfony包分组类。entities
:按“别名” Doctrine 分组类。
include
或exclude
部分允许过滤要过滤和遍历的类。
装饰
装饰是在每个类上显示信息。一些装饰器在类中添加信息,其他装饰器添加与其他类的链接。没有装饰器,每个类只是一个带有名称的盒子,没有其他内容。
以下装饰器基于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