osinet / grafizzi
PHP的GraphViz生成器。重新思考了PEAR Image_GraphViz。
Requires
- php: ^7.4 || ^8.1
- pimple/pimple: ^v3.5.0
- psr/log: ^1.1.4
Requires (Dev)
- monolog/monolog: ^1.24
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^9.5
README
欢迎使用Grafizzi,AT&T GraphViz的PHP包装器。
在您的PHP GraphViz项目中使用Grafizzi
在项目中安装它。
$ composer require osinet/grafizzi
使用Grafizzi生成图表
- 创建一个Pimple实例,将其传递给您的PSR/3日志实例(例如 Monolog)作为
logger
键,并可能传递其他参数,例如directed
来指定您是否想构建一个有向图。 - 创建一个
Graph
实例,将其传递给容器。 - 使用
addChild()
方法将Subgraph
、Node
和Edge
实例添加到图中。每个这些在构造函数中都接受容器和一个Attribute
实例数组,或者您可以在构造后使用setAttribute()
添加它们。属性实例可以在多个元素上重复使用。 - 在图实例上调用
build()
方法以获取包含您的Graphviz dot文件的字符串,然后您可以将其输出到文件或管道到dot
、neato
或您选择的Graphviz命令。 - 可选:使用一系列
Filter
实例来过滤结果,例如从您的PHP脚本中运行Graphviz(DotFilter
),或者在过滤器管道和字符串之间“tee”(StringFilter
)。
您可以从提供的example/
目录中的示例中获取灵感。
example/hello_node.php
构建一个显示大量日志的最小图example/grafizzi.php
构建Grafizzi的Filter
类层次结构的图。
在Grafizzi本身上工作
为开发安装Grafizzi
获取Grafizzi源代码
开始的最简单方法是克隆Git存储库。
git clone https://github.com/fgm/grafizzi.git
下载依赖项
一旦您有了Grafizzi存储库的克隆,您需要使用Composer包依赖管理器安装其开发依赖项。
按照https://getcomposer.org.cn/download/上的说明下载Composer
然后运行
php composer.phar install
请注意,Grafizzi适用于PHP ≥ 8.2。
检查系统配置
现在确保您的本地系统已正确配置以支持Grafizzi。为此,请执行以下操作:
php example/hello-node.php
您应该看到一个详细的调试执行跟踪。在POSIX系统上,您可以通过将stderr重定向到/dev/null
来仅获取结果Graphviz源。
php example/hello-node.php 2> /dev/null
您应该看到一个非常基础的Graphviz源
graph g {
rankdir="TB";
label="Some graph";
n1 [ label="Some node" ];
n2 [ label="Other node" ];
n1 -- n2;
} /* /graph g */
如果您收到任何警告或建议,或没有任何内容,请检查您的PHP错误日志,并在继续之前修复这些问题。
验证Grafizzi代码
如果您的系统包含make
命令,安装后运行以下命令:
make lint
您应该得到一个带有零警告的绿色栏。
生成文档
如果您的系统包含make
和`doxygen`命令,以及GraphViz本身,您可以通过运行以下命令生成一个完全索引的源代码文档:
make docs
这将在doxygen/目录中生成一个包含内部搜索引擎的HTML文档。通过浏览到doxygen/html/index.html
来使用它。
文档和搜索引擎甚至可以通过file:///
URLs使用,因此您不需要Web服务器即可访问它。
运行测试
如果您想确保 Grafizzi 在您的系统上运行良好,请运行以下命令:
make test
请注意,在开发模式下安装 Composer 将会安装 PHPUnit 到您的 vendor
文件夹。
清理
您可以通过运行以下命令来删除 php_error.log
、生成的 doxygen 文档目录、生成的覆盖率报告以及许多散乱的生成文件:
make clean
这不会删除 vendor/
目录。
祝您玩得开心!
许可协议
变更日志
- 0.0.4:
- 移除了对 PHP ≤ 8.1 的支持,增加了 PHP 8.3+ 的支持
- 升级到 PHPUnit 11.2.x
- 示例文件从
app/*
重命名为example/*
- 清理到 PHPstan 级别 7
- 0.0.3:
- 移除了对 PHP < 7.4 的支持,增加了 PHP 8.1+ 的支持
- 升级到 PHPUnit 9.5.x
- 清理到 PHPstan 级别 6
- 0.0.2:
- 移除了对 PHP 5.x 的支持,升级到 PHP 7.2/7.3
- 升级到 PHPUnit 8.x
- 0.0.1:
- 移除了对 Monolog 的运行时依赖
- 升级到 PHP/PHPunit 5.x。