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 .= '' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '';
- $html .= '字段名 | 数据类型 | 默认值 |
+ if ($lang == 'en') {
+ foreach ($tables as $k => $v) {
+ $html .= '';
+ $html .= '' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '';
+ $html .= 'field_name | data_type | default |
+ not_null |
+ auto_increment | remarks |
';
+ $html .= '';
+ foreach ($v['COLUMN'] as $f) {
+ $html .= '' . $f['COLUMN_NAME'] . ' | ';
+ $html .= '' . $f['COLUMN_TYPE'] . ' | ';
+ $html .= ' ' . $f['COLUMN_DEFAULT'] . ' | ';
+ $html .= ' ' . $f['IS_NULLABLE'] . ' | ';
+ $html .= '' . ($f['EXTRA'] == 'auto_increment' ? 'YES' : ' ') . ' | ';
+ $html .= ' ' . $f['COLUMN_COMMENT'] . ' | ';
+ $html .= '
';
+ }
+ $html .= '
';
+ }
+ } else {
+ foreach ($tables as $k => $v) {
+ $html .= '';
+ $html .= '' . $v['TABLE_NAME'] . ' ' . $v['TABLE_COMMENT'] . '';
+ $html .= '字段名 | 数据类型 | 默认值 |
允许非空 |
自动递增 | 备注 |
';
- $html .= '';
- foreach ($v['COLUMN'] as $f) {
- $html .= '' . $f['COLUMN_NAME'] . ' | ';
- $html .= '' . $f['COLUMN_TYPE'] . ' | ';
- $html .= ' ' . $f['COLUMN_DEFAULT'] . ' | ';
- $html .= ' ' . $f['IS_NULLABLE'] . ' | ';
- $html .= '' . ($f['EXTRA'] == 'auto_increment' ? '是' : ' ') . ' | ';
- $html .= ' ' . $f['COLUMN_COMMENT'] . ' | ';
- $html .= '
';
+ $html .= '';
+ foreach ($v['COLUMN'] as $f) {
+ $html .= '' . $f['COLUMN_NAME'] . ' | ';
+ $html .= '' . $f['COLUMN_TYPE'] . ' | ';
+ $html .= ' ' . $f['COLUMN_DEFAULT'] . ' | ';
+ $html .= ' ' . $f['IS_NULLABLE'] . ' | ';
+ $html .= '' . ($f['EXTRA'] == 'auto_increment' ? '是' : ' ') . ' | ';
+ $html .= ' ' . $f['COLUMN_COMMENT'] . ' | ';
+ $html .= '
';
+ }
+ $html .= '
';
}
- $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