nddcoder / diagram-as-code
该软件包最新版本(dev-master)的许可证信息不可用。
dev-master
2022-07-07 04:28 UTC
Requires
- php: ^7.4|^8.0
- alom/graphviz: ^1.1
This package is auto-updated.
Last update: 2024-09-07 09:08:35 UTC
README
安装
composer require nddcoder/diagram-as-code
使用
创建一个 demo.php
文件并返回 Diagram
实例
<?php use Nddcoder\Dac\Base\Cluster; use Nddcoder\Dac\Base\Diagram; use Nddcoder\Dac\Base\Style\Color; use Nddcoder\Dac\Base\Style\EdgeStyle; use Nddcoder\Dac\Base\Style\Style; use Nddcoder\Dac\Diagram\Aws\Compute\Ec2; use Nddcoder\Dac\Diagram\Onprem\Database\Mysql; use Nddcoder\Dac\Diagram\Onprem\Queue\Kafka; return Diagram::create('G', 'Demo Diagram As Code') ->direction(Style::DIR_LR) ->append( Cluster::create('kafka', 'Kafka Cluster') ->append($kafka = Kafka::create('kafka', 'Kafka')) ) ->append( Cluster::create('event_driven', 'Event Driven') ->append($consumer = Ec2::create('consumer', 'Consumer')) ) ->append($database = Mysql::create('mysql', 'Mysql')) ->connect($kafka, $consumer, EdgeStyle::create()->style(Style::BOLD)->color(Color::BROWN)) ->connect($consumer, $database, EdgeStyle::create()->style(Style::BOLD)->color(Color::DARKGREEN)->label('WRITE'));
运行 dac
命令来构建 dot
配置
vendor/bin/dac demo.php
Dot 配置输出
digraph G { label="Demo Diagram As Code"; node [shape=box, style=rounded, fixedsize=true, width="1.4", height="1.4", labelloc=b, imagescale=true, fontname="Sans-Serif", fontsize="13", fontcolor="#2D3436"]; edge [color="#7B8894", fontcolor="#2D3436", fontname="Sans-Serif", fontsize="13"]; graph [pad="0.5", splines=ortho, nodesep="1.2", ranksep="1.2", fontname="Sans-Serif", fontsize="15", fontcolor="#2D3436"]; rankdir=LR; subgraph cluster_kafka { label="Kafka Cluster"; graph [pad="1", shape=box, style=rounded, labeljust=l, pencolor="#AEB6BE", fontname="Sans-Serif", fontsize="12", bgcolor="#E5F5FD"]; kafka [label=Kafka, shape=none, height="2", image="resources/onprem/queue/kafka.png"]; } subgraph cluster_event_driven { label="Event Driven"; graph [pad="1", shape=box, style=rounded, labeljust=l, pencolor="#AEB6BE", fontname="Sans-Serif", fontsize="12", bgcolor="#E5F5FD"]; consumer [label=Consumer, shape=none, height="2", image="resources/aws/compute/ec2.png"]; } mysql [label=Mysql, shape=none, height="2", image="resources/onprem/database/mysql.png"]; kafka -> consumer [style=bold, color=brown]; consumer -> mysql [style=bold, color=darkgreen, xlabel=WRITE]; }
生成 PNG 文件
使用 Docker
vendor/bin/dac --root=/dot/vendor/nddcoder/diagram-as-code demo.php | docker run --rm -i -v $(pwd):/dot nshine/dot > demo.png
使用 dot
命令从 graphviz
。
vendor/bin/dac demo.php | dot -Tpng > demo.png
PNG 输出
合并多个文件
如果您想合并多个文件,可以使用 --all
选项
以下目录结构示例
projects/ project-a/ diagram.php project-b/ .diagram/ diagram.php ... vendor
vendor/bin/dac --all .
该命令将在所有子文件夹中查找 diagram.php
或 .diagram/diagram.php
文件
如果您想设置输出图表的名称,可以使用 --name
选项
vendor/bin/dac --all --name=demo .
示例
- examples/00-readme.php:README 中的示例
- examples/01-more-complex.php:更复杂的示例