onurb / doctrine-metadata-grapher
用于格式化 doctrine 元数据以用于 UML API 的辅助工具
Requires
- php: >=5.3.2
- doctrine/annotations: 1.*
- doctrine/orm: ^2.5
Requires (Dev)
- phpunit/phpunit: ~6.5
- squizlabs/php_codesniffer: ~2
Suggests
- onurb/doctrine-yuml-bundle: Symfony bundle to generate Entities mapping
README
MetadataGrapher 格式化对象数据,为 YUML api 准备数据,以生成视觉实体映射图
安装
- 将 composer 依赖项添加到您的项目中
// composer.json { // ... require: { // ... "onurb/doctrine-metadata-grapher": "~1.1" } }
使用
将 Doctrine 类元数据数组发送到 YUMLMetadataGrapher::generateFromMetadata() 方法
它返回发送到 YUML 的字符串,以从 api 获取映射图
如果您是 symfony 用户,则应安装 onurb/doctrine-yuml-bundle,该 bundle 已经使用了此库,并添加了一个链接到开发工具栏。如果您是 Zend 框架用户,则当您安装 zend-developer-tools 时,它包含在 DoctrineORMModule 中
前往此 github 仓库以获取检索类元数据数组的具体使用示例
##自定义显示:添加注释,为类着色,隐藏或显示字段描述,隐藏特定或所有实体列
完全可选,您可以显示字段描述,为地图添加颜色,或编写与特定类链接的注释。
为此,库提供了一些 Doctrine 注解,用于定义颜色、添加注释、隐藏或显示属性属性或显示图中的特定方法。所有这些都在下面描述
选项使用
显示字段描述
要显示实体属性,请在您的实体上使用 @ShowAttributesProperties 注解
[...] use Onurb\Doctrine\ORMMetadataGrapher\Mapping as Grapher; /** * @Grapher\ShowAttributesProperties * @ORM\Entity */ Class MyEntity { //[...] }
也可以显示所有实体的属性,仅在不太重要的实体上隐藏它
/** * @param ClassMetadata[] $metadata * @param boolean $showFieldsDescription * @param array $colors * @param array $notes * @return string */ public function generateFromMetadata( array $metadata, $showFieldsDescription = false, $colors = array(), $notes = array() )
要显示字段描述,只需将 $showFieldsDescription 转换为 true
$metadataGrapher = new \Onurb\Doctrine\ORMMetadataGrapher\YumlMetadataGrapher(); $dsl_text = $metadataGrapher->generateFromMetadata($classMetadata, true);
还可以使用 @HideAttributesProperties 注解(如果 $showFieldsDescription 转换为 true:如果为 false,则没有效果)来隐藏一个实体(或多个)
/** * @Grapher\HideAttributesProperties */ MyEntity { //[...] }
使用注解隐藏实体列:在类上使用 @grapher\HideColumns 注解
/** * @Grapher\Hidecolumns */ MyEntity { //[...] }
或使用 @Grapher\HiddenColumn 在实体属性上隐藏您想要隐藏的特定秘密列:可用于隐藏您的凭据逻辑,或避免在图中出现重复字段,如 created_at 或 updated_at。
MyEntity { /** * @ORM\Column(/* ... */) * @Grapher\HiddenColumn */ private $secret; }
使用颜色
您可以使用 yuml 颜色,并根据需要将其应用于类或整个命名空间。颜色优先级由命名空间中的层次结构决定...
颜色使用
定义类颜色的最简单方法是在实体中使用注解,如下所示
use Onurb\Doctrine\ORMMetadataGrapher\Mapping as Grapher; /** * @Grapher\Color("blue") */
但如果您想为整个命名空间设置相同的颜色(例如显示带有特定颜色的 zend 模块或 Symfony 模块),那么对每个类进行操作可能会很无聊。
因此,您还可以在命名空间中定义默认颜色,但不是使用注解,而是应用于实体。
这是通过生成Metadata() 方法的第三个参数来完成的,以注入关联数组。颜色优先级由注解提供,用户可以为命名空间定义颜色,并为他想要突出的类定义特定颜色。这可以通过参数选项根据您的框架逻辑传递,以允许最终用户进行自定义
// [...] $defaultColors = array( 'MyModule\\Project\Namespace\FunctionalityOne => 'green, 'MyModule\\Project\Namespace\FunctionalityTwo => 'red, 'AnotherModule\\Namespace' => 'violet', ); $dsl_text = $metadataGrapher->generateFromMetadata($classMetadata, false, $defaultColors);
可用的颜色完整列表可在此处找到 链接
显示方法
use use Onurb\Doctrine\ORMMetadataGrapher\Mapping as Grapher; // [...] /** * @Grapher\IsDisplayedMethod() */ public function myImportantMethod() {}
添加注释
注释的使用
注释由直接在要注释的类上声明的注释进行管理
use Doctrine\ORM\Mapping as ORM; use Onurb\Doctrine\ORMMetadataGrapher\Mapping as Grapher; /** * @Grapher\Note("My first Entity note") * @ORM\Entity */ class MyEntity{}
默认情况下,注释颜色为黄色...也许是因为便利贴的颜色...我的选择 ;)
您可以这样自定义
/** * @Grapher\Note(value="An Entity note", color="a_great_yuml_color") */
就像我们对颜色所做的那样,您也可以在generateMetadata方法中注入注释数组,但与注释结合使用是无用的 => 我们不在命名空间上放置注释,只放置实体。