php 读取表结构自动生成php类
来源:互联网 发布:cd windows syswow64 编辑:程序博客网 时间:2024/06/13 14:30
平时写项目的时候经常会碰到操作数据库,每次操作数据库的时候最麻烦的就是要写一个表映射的类,根据规律总结写了一个自动生成的小demo:
<?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操作类
0 0
- php 读取表结构自动生成php类
- php 读取表结构自动生成php操作类
- php读取jar信息自动生成jad文件
- PHP代码根据数据表结构自动生成数据录入页面
- php 数据层自动生成类
- PHP自动生成月历代码
- php 自动生成订单编号
- PHP 自动生成随机密码
- php自动生成数据字典
- 使用PHP Excel类读取和生成ex…
- 使用PHP Excel类读取和生成excel文件
- php上传自动生成缩略图及水印类
- php图片文件上传类 (附自动生成缩略图)
- 【原】php自动生成带图片附件的word文档类
- PHP读取MYSQL生成XML代码
- PHP读取动态页面生成HTML
- PHP读取MySQL生成XML格式数据
- php读取目录生成文件列表
- github 上传多个文件(如何看自己的demo)
- 获取内容的一个curl类(采集专用)
- rhce学习第二天
- LeetCode—365. Water and Jug Problem
- ps抠图方法
- php 读取表结构自动生成php类
- input标签动态属性执行的函数
- 不操作数据库,js解析json三级联动
- Docker实战(十二):Docker安装ElasticSearch集群环境
- 实时的分布式sphinx索引配置及使用方法总结
- Docker实战(十一):Docker安装ELK环境(二)
- Spring的注入方式
- 一周stackoverflow热门问题选登:“==” 和 “!=” 相互依存吗?
- 01. ubuntu 16.04 LTS 双系统安装之系统盘制作