bound1ess/mermaid-php

由 @knsv (github.com/knsv/mermaid) 维护的 Mermaid 项目的 PHP 接口。

1.1.1 2015-04-25 11:20 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:38:53 UTC


README

Build Status

首先,熟悉一下由 knsv (github.com/knsv/mermaid) 维护的优秀的 Mermaid 项目。

基本上,MermaidPhp 为您提供了一个优美且简洁的接口来生成兼容 Mermaid 的代码。

现在(如果您想尝试一下),让我们回顾一下安装过程。

安装

为了安装 MermaidPhp,您需要 Composer。

在您的项目根目录中运行以下命令

composer require bound1ess/mermaid-php:~1.0

好的,现在将 vendor/autoload.php 文件包含到您的项目中(如果您还没有这样做的话)并准备好开始使用!

使用示例

以下 PHP 代码

use Bound1ess\MermaidPhp\Graph,
	Bound1ess\MermaidPhp\Printer,
	Bound1ess\MermaidPhp\Node,
	Bound1ess\MermaidPhp\Link;

$graph = new Graph('from left to right');

$graph->addNodes(
	$a = new Node('A', ['Hard edge']),
	$b = new Node('B', ['Round edge', Node::ROUND_EDGE]),
	$c = new Node('C', ['Decision', Node::RHOMBUS]),
	$d = new Node('D', ['Result one']),
	$e = new Node('E', ['Result two'])
);

$graph->addLinks(
	new Link($a, $b, 'Link text'),
	new Link($b, $c),
	new Link($c, $d, 'One'),
	new Link($c, $e, 'Two')
);

$code = (new Printer)->printGraph($graph);

将产生类似这样的效果:

如果您想在浏览器中查看此示例,请执行以下操作

  • 执行 vendor/bound1ess/php-mermaid/examples/create 文件,它将在您的项目根目录中生成 example.html 文件。
  • 通过运行此命令设置 PHP 开发服务器:php -S localhost:8000
  • 通过访问 localhost:8000/example.html 在浏览器中查看 example.html 文件。

API

  • Bound1ess\MermaidPhp\Printer

    • __construct($testMode = false)
      • $testMode: 当设置为 true 时,Printer 将生成无效的代码,但更容易测试。
    • printGraph(Graph $graph, $wrapInDiv = false)
      • $graph: 期望一个 Bound1ess\MermaidPhp\Graph 实例。
      • $wrapInDiv: 当设置为 true 时,生成的代码将被包裹在一个具有 mermaid 类的 <div> 元素中。
      • 此方法将返回一个字符串。
  • Bound1ess\MermaidPhp\Graph

    • __construct($direction = null)
      • $direction: 如果不为 null,将调用 setDirection 方法。
    • setDirection($direction)
      • $direction: 有效的值是 Node::TOP_BOTTOMNode::BOTTOM_TOPNode::LEFT_RIGHTNode::RIGHT_LEFT、从上到下、从下到上、从左到右、从右到左。
      • 此方法将返回无(void)。
      • 此方法可以抛出一个 Bound1ess\MermaidPhp\Exceptions\InvalidDirectionException 实例。
    • addNode(Node $node)
      • $node: 期望一个 Bound1ess\MermaidPhp\Node 实例。
      • 此方法将返回无(void)。
    • addNodes(Node $node, ...)
    • addLink(Link $link)
      • $link: 期望一个 Bound1ess\MermaidPhp\Link 实例。
      • 此方法将返回无(void)。
    • addLinks(Link $link, ...)
    • addClass(NodeClass $class)
      • $class: 一个 Bound1ess\MermaidPhp\NodeClass 实例。
      • 此方法将返回无(void)。
    • addClasses
      • dynamic: 需要多少个 Bound1ess\MermaidPhp\NodeClass 实例。
      • 此方法将返回无(void)。
  • Bound1ess\MermaidPhp\Node

    • __construct($id, array $settings = null)
      • $id: 节点 ID(应为字符串)。
      • $settings: 如果不为 null,将调用 setText 方法。
    • setText($text, $style = null)
      • $text: 节点文本(应为字符串)。
      • $style: 有效的值是 Node::ROUND_EDGENode::SQUARE_EDGENode::CIRCLENode::RHOMBUSNode::ASYMETRIC_SHAPE。如果传递 null,则使用 Node::SQUARE_EDGE
      • 此方法可以抛出一个 Bound1ess\MermaidPhp\Exceptions\InvalidStyleException 实例。
      • 此方法将返回无(void)。
    • attachClass($name)
      • $name: 作为字符串的类名。
      • 此方法将返回无(void)。
    • attachClasses
      • dynamic: 需要多少个字符串。
      • 此方法将返回无(void)。
  • Bound1ess\MermaidPhp\Link

    • __construct(Node $node, Node $anotherNode, $text = null, $isOpen = false)
      • $node: 期望一个 Bound1ess\MermaidPhp\Node 实例。
      • $anotherNode: 应期望一个 Bound1ess\MermaidPhp\Node 的实例。
      • $text: 链接上的文本 (应为字符串或 null)
      • $isOpen: 链接是否应该开启或有箭头 (应为布尔值,默认值为 false)
    • setText($text)
      • $text: 链接上的文本 (应为字符串)
      • 此方法将返回无(void)。
    • isOpen($newValue = null)
      • $newValue: 如果传递 null,则此方法将返回当前值,否则将设置新值 (应为布尔值)
      • 此方法将返回布尔值或无返回值(void)。
  • Bound1ess\MermaidPhp\NodeClass

    • __construct($name)
      • $name: 作为字符串的类名。
    • add($property, $value)
      • $property: 属性名称,以 string 为格式。
      • $value: 属性值,以 string 为格式。
      • 此方法将返回类实例本身。

许可证信息

本项目采用 MIT 许可证(请参阅许可证文件以获取详细信息)。