php 读取表结构自动生成php类
2016-06-27 10:25
501 查看
平时写项目的时候经常会碰到操作数据库,每次操作数据库的时候最麻烦的就是要写一个表映射的类,根据规律总结写了一个自动生成的小demo:
最终实现效果:
推荐阅读: php 读取表结构自动生成php操作类
<?php // 数据库配置参数 $db_config = array( 'host' => '127.0.0.1', 'port' => 3306, 'username' => 'root', 'password' => '', 'dbname' => 'joe_db', 'charset' => 'utf8' ); $tablePre = 'joe_'; // 表前缀 $tableName = 'users'; // 表名 $res = linkdb($db_config, $tablePre . $tableName); $className = $tableName . 'Dmodel'; $fileName = $tableName . '.dm.class.php'; $annStr = addAnnotation($fileName, $tableName, '用户session表'); $classStr = readTableStr($res, $className,$annStr); // 写入文件 $file = fopen($fileName, "w+"); fwrite($file, $classStr); fclose($file); /** * 根据表结构初始化表对象 * * @param unknown $res * @param unknown $className * @return string */ function readTableStr($res, $className, $annStr='') { $result = '<?php ' . "\n"; $result .= $annStr; $result .= "class $className \n{"; // 变量 foreach ($res as $v) { $result .= "\n" . 'private $_' . strtolower($v['Field']) . ";//" . $v['Comment'] . $v['Type']; } $result .= "\n"; // get set foreach ($res as $v) { $result .= "\n public function set" . $v['Field'] . '($_' . strtolower($v['Field']) . "){"; $result .= "\n" . ' $this->_' . strtolower($v['Field']) . '=$_' . strtolower($v['Field']) . ";"; $result .= "\n }"; $result .= "\n public function get" . $v['Field'] . '(){'; $result .= "\n" . ' return $this->_' . strtolower($v['Field']) . ";"; $result .= "\n }"; $result .= "\n"; } $result .= " \n }"; $result .= " \n ?>"; return $result; } /** * 添加类注释 * * @param unknown $fileName * @param unknown $fun * @param unknown $des * @param unknown $date * @param unknown $author */ function addAnnotation($fileName, $fun, $des) { $annStr = "\n/**"; $annStr .= "\n* 文件名:" . $fileName; $annStr .= "\n* 功能: 模型层-表-" . $fun; $annStr .= "\n* 描述: " . $des; $annStr .= "\n* 日期: " . date('y-m-d', time()); $annStr .= "\n* 版权: Copyright © 2016 github.com/JoeXiong All Rights Reserved"; $annStr .= "\n* @author JoeXiong"; $annStr .= "\n*/"; return $annStr; } /** * * 连接数据库,查询表结构 * * @param unknown $array * 数据库连接参数 * @param unknown $tableName * 表名 */ function linkdb($array, $tableName) { $mysql_server_name = $array['host']; // 改成自己的mysql数据库服务器 $mysql_username = $array['username']; // 改成自己的mysql数据库用户名 $mysql_password = $array['password']; // 改成自己的mysql数据库密码 $mysql_database = $array['dbname']; // 改成自己的mysql数据库名 $conn = mysql_connect($mysql_server_name, $mysql_username, $mysql_password) or die("error connecting"); // 连接数据库 mysql_query("set names " . $array['charset']); // 数据库输出编码 mysql_select_db($mysql_database); // 打开数据库 $sql = "SHOW FULL COLUMNS FROM $tableName"; $res = mysql_query($sql); $res = dataTable($res); return $res; } /** * 返回到表集合 * * @param query $query * @return array */ function dataTable($query) { if ($query) { $ListTable = array(); while ($rows = mysql_fetch_array($query, MYSQL_ASSOC)) { array_push($ListTable, $rows); } return $ListTable; } else { return 0; } } /** * 调试函数 * * @param unknown $msg */ function show_bug($msg) { echo '<pre>'; var_dump($msg); echo '</pre>'; }
最终实现效果:
<?php /** * 文件名:users.dm.class.php * 功能: 模型层-表-users * 描述: 用户session表 * 日期: 16-06-27 * 版权: Copyright © 2016 github.com/JoeXiong All Rights Reserved * @author JoeXiong */ class usersDmodel { private $_userid; // int(11) unsigned private $_username; // 用户名varchar(50) private $_password; // 密码varchar(32) private $_email; // 邮箱varchar(80) private $_mobile; // 手机号码varchar(20) private $_ip; // 用户注册IDvarchar(30) private $_status; // 帐号状态tinyint(1) unsigned private $_areaid; // 区域Id,10001为本区;10002为qq用户;10003为新浪微博用户smallint(5) unsigned private $_addtime; // 创建时间int(10) unsigned public function setUserId($_userid) { $this->_userid = $_userid; } public function getUserId() { return $this->_userid; } public function setUserName($_username) { $this->_username = $_username; } public function getUserName() { return $this->_username; } public function setPassWord($_password) { $this->_password = $_password; } public function getPassWord() { return $this->_password; } public function setEmail($_email) { $this->_email = $_email; } public function getEmail() { return $this->_email; } public function setMobile($_mobile) { $this->_mobile = $_mobile; } public function getMobile() { return $this->_mobile; } public function setIP($_ip) { $this->_ip = $_ip; } public function getIP() { return $this->_ip; } public function setStatus($_status) { $this->_status = $_status; } public function getStatus() { return $this->_status; } public function setAreaId($_areaid) { $this->_areaid = $_areaid; } public function getAreaId() { return $this->_areaid; } public function setAddTime($_addtime) { $this->_addtime = $_addtime; } public function getAddTime() { return $this->_addtime; } } ?>
推荐阅读: php 读取表结构自动生成php操作类
相关文章推荐
- 一个关于if else容易迷惑的问题
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 数据库链接字符串查询网站
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- DB2实例管理
- DB2实例管理
- Php Installing An Expansion
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- php7 读取php.ini[4]