PlantUMLの書き込み・読み込みができるものがなかったので作成。
- PHP 5.5.38 >=
PlantUMLは機能が多いので、読み取り・出力のみサポート。
論理式は今の所対応しない予定
- Use Case (ユースケース図)
- Activity (アクティビティ図)
- State (ステートチャート図)
- Sequence (シーケンス図)
- Class (クラス図)
- Object (オブジェクト図)
- Component (コンポーネント図)
- Component (パッケージ図)
- Component (配置図)
composer require ateliee/plantuml-parser
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Ateliee\PlantUMLParser\PUMLParser;
use Ateliee\PlantUMLParser\PUMLKeyValue;
use Ateliee\PlantUMLParser\PUMLStr;
use Ateliee\PlantUMLParser\PUMLElementList;
use Ateliee\PlantUMLParser\Structure\PUMLSkinParam;
use Ateliee\PlantUMLParser\Structure\PUMLDefine;
use Ateliee\PlantUMLParser\Structure\PUMLPackage;
use Ateliee\PlantUMLParser\Structure\PUMLEntity;
use Ateliee\PlantUMLParser\Structure\PUMLRelation;
$uml = new PUMLElementList();
$uml->add((new PUMLDefine('MAIN_ENTITY', '#FCE4D6-F8CBAD'))->setComment("commnt to here"));
$uml->add(
(new PUMLSkinParam('class'))
->setComment("default style.")
->add(new PUMLKeyValue('BackgroundColor', 'METAL'))
->add(new PUMLKeyValue('BorderColor', 'Black'))
->add(new PUMLKeyValue('ArrowColor', 'Black'))
);
$uml->add(
(new PUMLPackage('DB', 'ext', '<<Database>>'))
->add(
(new PUMLEntity('Customer', 'customer'))
->add(new PUMLStr('+ ID [PK]'))
->add(new PUMLStr('--'))
->add(new PUMLStr('name'))
->add(new PUMLStr('zip'))
->add(new PUMLStr('address'))
->add(new PUMLStr('tel'))
->add(new PUMLStr('fax'))
)
);
$uml->add(
(new PUMLPackage('開発対象システム', 'target_system'))
->add(
(new PUMLEntity('注文テーブル', 'order', '<<主,TRANSACTION_MARK_COLOR>> MAIN_ENTITY'))
->add(new PUMLStr('+ 注文ID [PK]'))
->add(new PUMLStr('--'))
->add(new PUMLStr('# 顧客ID [FK]'))
->add(new PUMLStr('注文日時'))
->add(new PUMLStr('配送希望日'))
->add(new PUMLStr('配送方法'))
->add(new PUMLStr('お届け先名'))
->add(new PUMLStr('お届け先住所'))
->add(new PUMLStr('決済方法'))
->add(new PUMLStr('合計金額'))
->add(new PUMLStr('消費税額'))
->setComment("マスターテーブルを M、トランザクションを T などと安直にしていますが、
チーム内でルールを決めればなんでも良いと思います。交差テーブルは \"I\" とか。
角丸四角形が描けない代替です。
1文字なら \"主\" とか \"従\" とか日本語でも OK だったのが受ける。")
)
);
$uml->add(
(new PUMLRelation('customer', '|o-ri-o{', 'order'))
);
$plant_uml = new PUMLParser();
$plant_uml->save(__DIR__.'/test.puml', $uml);
@startuml
/' commnt to here '/
!define MAIN_ENTITY #FCE4D6-F8CBAD
/' default style. '/
skinparam class{
BackgroundColor METAL
BorderColor Black
ArrowColor Black
}
package "DB" as ext <<Database>>{
entity "Customer" as customer{
+ ID [PK]
--
name
zip
address
tel
fax
}
}
package "開発対象システム" as target_system{
/'
マスターテーブルを M、トランザクションを T などと安直にしていますが、
チーム内でルールを決めればなんでも良いと思います。交差テーブルは "I" とか。
角丸四角形が描けない代替です。
1文字なら "主" とか "従" とか日本語でも OK だったのが受ける。
'/
entity "注文テーブル" as order <<主,TRANSACTION_MARK_COLOR>> MAIN_ENTITY{
+ 注文ID [PK]
--
# 顧客ID [FK]
注文日時
配送希望日
配送方法
お届け先名
お届け先住所
決済方法
合計金額
消費税額
}
}
customer |o-ri-o{ order
@enduml