dlid / cdbyuml
使用 yuml.me 生成数据库模型的 PHP 类
v1.0
2014-10-11 15:25 UTC
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-24 03:33:45 UTC
README
CDbYuml
CDbYuml 会根据您的 PDO sqlite 或 mysql 数据源创建类图,使用 yuml.me。
- 灵活,您可以使用您喜欢的数据库访问层
- 易于使用现有的 PDO 连接(以下为示例)
由于您可以定义查询的执行方式,CDbYuml 可以与许多其他数据库库一起使用
- CDbYuml 将使用您的回调函数来查询数据库的元数据
- CDbYuml 将根据数据库元数据生成 Yuml 字符串
- 将 Yuml 字符串发布到 yuml.me 并下载生成的图
版本
0.2
技术
CDbYuml 有以下要求
关于复杂图型的说明
对于非常大的数据库,这可能不是您想要的库。它已经与具有少量不同类型外键的简单数据库结构进行了测试。
如果生成的图不符合您的期望,您可以随时发送生成的文本,我会尝试找出使其兼容的方法。
选项
$cdbyuml->setOptions([ 'proxy' => null, // Proxy address 'proxyauth' => null, // Proxy authentication (username:password) 'query' => null, // \PDO Object or custom function to fetch data from database 'sql_dialect' => 'sqlite', // sqlite or mysql. Determines which queries to run 'style' => 'plain', // Yuml.me styles (plain, scruffy or nofunky) 'scale' => 100, // Yuml.me scale (100 = 100%) 'close' => null, // Optional callback function to close database 'force' => false, // Ignore all caching. 'cachepath' => null, // Full path to the cachefile 'cachetime' => '15 minutes' // Maximum time before re-validating database structure ]);
方法
- setOptions ( $options ) - 配置库。参见上方选项
- outputImage ( [$force = true] ) - 生成图并输出图像到浏览器
- outputText ( [$force = true] ) - 输出包含调试信息的 HTML 页面
- __construct ( $options ) - 配置库。与 setOptions 相同的参数
示例用法
以下示例创建了一个包含多个表的 sqlite 数据库。
然后使用 CDbYuml 生成表的图。
// Open a database connection $dbh = new PDO('sqlite:mydatabase.sqlite3'); // Initialize CDBYuml $cdbyuml = new \Dlid\DbYuml\CDbYuml(); $cdbyuml->setOptions([ 'sql_dialect' => 'sqlite', // Callback function query the database for metadata 'query' => function($query, $parameters) use ($dbh) { // Pass along query and parameters to our open PDO connection $stmt = $dbh->prepare($query); $stmt->execute($parameters); return $stmt->fetchAll(\PDO::FETCH_ASSOC); } ]); // Fetch metadata from database and generate the YUml string $cdbyuml->execute() #->outputText() // Uncomment to see debug information // Output the generated diagram ->outputImage();
其他方法
将 PDO 对象作为查询传递
您还可以将 PDO 对象作为第一个参数传递。其他选项可以使用第二个参数设置。
# Just the PDO: $cdbyuml->setOptions($dbh); # Some additional options $cdbyuml->setOptions($dbh, [ 'proxy' => 'http://some-proxy.example.net:8080' ]);
注意:使用上述方法,您不能在第二个参数中传递 'query' 选项。然后将使用内部检索数据的函数
使用构造函数而不是 setOptions
最后,您也可以像 setOptions 一样使用构造函数
# Example passing just the PDO: $cdbyuml = new \Dlid\DbYuml\CDbYuml([ 'query' => $dbh, 'cachepath' => '/users/david/temp/cache/dbcache1' ]);
缓存
我建议对您的图进行缓存。如果您不这样做,则 CDbYuml 将每次都查询数据库的结构并从 yuml.me 下载新的图。请缓存,这样每个人都会很高兴!
$cdbyuml->setOptions([ 'cachefile' => '/somepath/db_diagram', 'cachetime' => '5 minutes' ]);
在上面的示例中,如果您指定了 cachepath 和 cachetime,将发生以下情况
- Yuml 文本将被保存到文件 /somepath/db_diagram.cache
- 下载的图像将被保存到文件 /somepath/db_diagram.png
当以下情况发生时,缓存将失效
- 您更改了 'style' 参数
- 您更改了 'scale' 参数
- 缓存时间已过期(自上次写入 .cache 文件以来已过去五分钟)
如果 'style' 或 'scale' 发生更改,则将重新提取数据库结构并下载新的图
如果缓存时间过期,则将再次查询数据库的结构
- 如果结构已更改,则将下载新的图
- 否则将使用 /somepath/db_diagram.png 图像
##作曲家
您可以将 dlid/cdbyuml 添加到您的 composer.json 文件中,如下所示。
"require": { "dlid/cdbyuml": "dev-master" }
许可协议
MIT