diff --git a/composer.json b/composer.json index a39e44e..9bf4f70 100644 --- a/composer.json +++ b/composer.json @@ -9,9 +9,11 @@ } ], "require": { + "php": ">=5.6", "ext-mysqli": "*", "phpunit/phpunit": "^8.5", - "mockery/mockery": "^1.3" + "mockery/mockery": "^1.3", + "mpdf/mpdf": "^8.0" }, "autoload": { "psr-4": { diff --git a/src/Data/Draw.php b/src/Data/Draw.php index d8f76a6..dbe182b 100644 --- a/src/Data/Draw.php +++ b/src/Data/Draw.php @@ -2,30 +2,54 @@ namespace Tim168\DataDict\Data; +use Mpdf\Mpdf; + class Draw { - public function dataToHtml($tables) + public function dataToHtml($tables, $lang = 'zh-CN') { if (!empty($tables)) { $html = ''; - foreach ($tables as $k => $v) { - $html .= ''; - $html .= ''; - $html .= ' + if ($lang == 'en') { + foreach ($tables as $k => $v) { + $html .= '
' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '
字段名数据类型默认值
'; + $html .= ''; + $html .= ' + + '; + $html .= ''; + foreach ($v['COLUMN'] as $f) { + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + } + $html .= '
' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '
field_namedata_typedefaultnot_nullauto_increment remarks
' . $f['COLUMN_NAME'] . '' . $f['COLUMN_TYPE'] . ' ' . $f['COLUMN_DEFAULT'] . ' ' . $f['IS_NULLABLE'] . '' . ($f['EXTRA'] == 'auto_increment' ? 'YES' : ' ') . ' ' . $f['COLUMN_COMMENT'] . '

'; + } + } else { + foreach ($tables as $k => $v) { + $html .= ''; + $html .= ''; + $html .= ''; - $html .= ''; - foreach ($v['COLUMN'] as $f) { - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; + $html .= ''; + foreach ($v['COLUMN'] as $f) { + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + } + $html .= '
' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '
字段名数据类型默认值 允许非空 自动递增备注
' . $f['COLUMN_NAME'] . '' . $f['COLUMN_TYPE'] . ' ' . $f['COLUMN_DEFAULT'] . ' ' . $f['IS_NULLABLE'] . '' . ($f['EXTRA'] == 'auto_increment' ? '是' : ' ') . ' ' . $f['COLUMN_COMMENT'] . '
' . $f['COLUMN_NAME'] . '' . $f['COLUMN_TYPE'] . ' ' . $f['COLUMN_DEFAULT'] . ' ' . $f['IS_NULLABLE'] . '' . ($f['EXTRA'] == 'auto_increment' ? '是' : ' ') . ' ' . $f['COLUMN_COMMENT'] . '

'; } - $html .= '

'; } + return $html; } else { return false; @@ -59,4 +83,22 @@ public function ToHtml($title, $html) return $content; } + + public function ToHtmlFile($content, $fileName) + { + $filename = $fileName . ".html"; + $handle = fopen($filename, "w"); + fwrite($handle, $content); + fclose($handle); + } + + public function ToPdfFile($content, $path) + { + $mpdf = new Mpdf(); + $mpdf->autoScriptToLang = true; + $mpdf->autoLangToFont = true; + $mpdf->WriteHTML($content); + $mpdf->Output($path . '.pdf', 'f'); + } + } \ No newline at end of file diff --git a/src/Data/Fetch.php b/src/Data/Fetch.php index ea3b8ee..bb54e88 100644 --- a/src/Data/Fetch.php +++ b/src/Data/Fetch.php @@ -6,10 +6,6 @@ class Fetch { - public function __construct() - { - } - public function conn($dbHost, $dbUserName, $dbPassWord, $dbName, $dbPort) { try { diff --git a/src/DataDict.php b/src/DataDict.php index 874f79b..3a32aa5 100644 --- a/src/DataDict.php +++ b/src/DataDict.php @@ -12,9 +12,8 @@ class DataDict public $dbPassWord; public $dbName; public $dbPort; - public $title = '数据字典'; - public function __construct($dbHost, $dbUserName, $dbPassWord, $dbName, $dbPort) + public function __construct($dbHost, $dbUserName, $dbPassWord, $dbName, $dbPort = '3306') { $this->dbHost = $dbHost; $this->dbUserName = $dbUserName; @@ -23,17 +22,20 @@ public function __construct($dbHost, $dbUserName, $dbPassWord, $dbName, $dbPort) $this->dbPort = $dbPort; } - public function get() + public function get($fileName = 'dict', $type = 'html', $lang = 'zh-CN') { $fetch = new Fetch(); $tables = $fetch->conn($this->dbHost, $this->dbUserName, $this->dbPassWord, $this->dbName, $this->dbPort); - var_dump($tables); - exit(); if (!empty($tables)) { $draw = new Draw(); - $html = $draw->dataToHtml($tables); - $content = $draw->ToHtml($this->title, $html); - return $content; + $html = $draw->dataToHtml($tables, $lang); + $content = $draw->ToHtml($lang == 'zh-CN' ? '数据字典' : 'Data Dict', $html); + if ($type == 'pdf') { + $draw->ToPdfFile($content,$fileName); + } else { + $draw->ToHtmlFile($content, $fileName); + } } + return true; } } \ No newline at end of file