dlid/cdbyuml 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dlid/cdbyuml

Composer 安装命令:

composer require dlid/cdbyuml

包简介

PHP classes for generating database models using yuml.me

README 文档

README

Build Status Scrutinizer Code Quality Code Coverage

Latest Stable Version Total Downloads Latest Unstable Version License

CDbYuml

CDbYuml will create class diagrams from your PDO sqlite or mysql datasource using yuml.me.

  • Flexible so you can use your favorite datasbase access layer
  • Easy to use with an existing PDO connection (see example below)

CDbYuml can be used with many other database librariees due to the fact that you will define how the queries are executed:

  • CDbYuml will use your callback function to query database for metadata
  • CDbYuml will then generate the Yuml string based on the dataase metadata
  • The Yuml string is posted to yuml.me and the generated diagram is downloaded

Version

0.2

Tech

CDbYuml has the following requirements:

  • CURL - The Client URL extension must be enabled in PHP
  • PHP - tested with PHP 5.4

Note about complex diagrams

For very large and/or databases this may not be the library you are looking for. It has been tested with simple database structures with a few foreign keys of different kinds.

If the diagram is not generated like you want, you can always send me the generated text and I can try to figure out how to make it compatible.

Options

$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
]);

Methods

  • setOptions ( $options ) - Configure the library. See option above
  • outputImage ( [$force = true] ) - generate diagram and output the image to the browser
  • outputText ( [$force = true] ) - output a HTML page with debug information
  • __construct ( $options ) - Configure the library. Same parameters as setOptions

Sample usage

In the following example a sqlite database is created with a number of tables.

CDbYuml is then used to generate the diagram of the table.

// 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();

Alternative ways to do it

Passing the PDO object as a query

You can also pass your PDO object as the first parameter. Other options can then be set using the second parameter.

# Just the PDO:
$cdbyuml->setOptions($dbh);

# Some additional options
$cdbyuml->setOptions($dbh, [ 'proxy' => 'http://some-proxy.example.net:8080' ]);

Note: Using the method above you can not pass in the 'query' option in the second parameter. The internal function for retreiving data will then be used

Using the constructor instead of setOptions

Finally you can also use the constructor in the very same way as setOptions:

# Example passing just the PDO:
$cdbyuml = new \Dlid\DbYuml\CDbYuml([
 'query' => $dbh,
 'cachepath' => '/users/david/temp/cache/dbcache1'
]);

Caching

I recommend using caching for your diagrams. If you do not, then CDbYuml will query your database for it's structure and download a new diagram from yuml.me every time. Please cache and everyone will be so, so happy!

$cdbyuml->setOptions([
 'cachefile' => '/somepath/db_diagram',
 'cachetime' => '5 minutes'
]);

In the above examle, if you specify cachepath and cachetime two things will happend:

  • The yuml text will be saved to the file /somepath/db_diagram.cache
  • The downloaded image will be saved to the file /somepath/db_diagram.png

The cache will be invalidated if:

  • you change the 'style' parameter
  • you change the 'scale' parameter
  • the cachetime has expired (five minutes since last .cache-file was written)

If 'style' or 'scale' changes, the database structure will be extracted again and a new diagram will be downloaded.

If the cachetime expires then the database will be queried again for it's structure and:

  • if the structure has changed, then a new diagram will be downloaded
  • otherwise the /somepath/db_diagram.png image will be used

##Composer

You can add dlid/cdbyuml to your composer.json file like this.

 "require": {
  "dlid/cdbyuml": "dev-master"
 }

License

MIT

统计信息

  • 总下载量: 67
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-10-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固