博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP ORM 个人实现
阅读量:6196 次
发布时间:2019-06-21

本文共 3577 字,大约阅读时间需要 11 分钟。

_DB = mysql_connect('127.0.0.1','root','') ; $this->_tableName = $this->getTableName(); $this->_arRelationMap = $this->getRelationMap(); if(isset($id))$this->_ID = $id; } abstract protected function getTableName(); abstract protected function getRelationMap(); public function Load(){ if(isset($this->_ID)){ $sql = "SELECT "; foreach($this->_arRelationMap as $k => $v){ $sql .= '`'.$k.'`,'; } $sql .= substr($sql,0,strlen($sql)-1); $sql .= "FROM ".$this->_tableName." WHERE ".$this->pk." = ".$this->_ID; $result =$this->_DB->mysql_query($sql); foreach($result[0] as $k1 => $v1){ $member = $this->_arRelationMap[$key]; if(property_exists($this,$member)){ if(is_numeric($member)){ eval('$this->'.$member.' = '.$value.';'); }else{ eval('$this->'.$member.' = "'.$value.'";'); } } } } $this->is_load = true; } public function __call($method,$param){ $type = substr($method,0,3); $member = substr($method,3); switch($type){ case 'get': return $this->getMember($member); break; case 'set': return $this->setMember($member,$param[0]); } return false; } public function setMember($key){ if(property_exists($this,$key)){ if(is_numeric($val)){ eval('$this->'.$key.' = '.$val.';'); }else{ eval('$this->'.$key.' = "'.$val.'";'); } $this->_modifyMap[$key] = 1; }else{ return false; } } public function getMember($key,$val){ if(!$this->is_load){ $this->Load(); } if(property_exists($this,$key)){ eval('$res = $this->'.$key.';' ); return $this->$key; } return false; } public function save(){ if(isset($this->_ID)){ $sql = "UPDATE ".$this->_tableName." SET "; foreach($this->arRelationMap as $k2 => $v2){ if(array_key_exists( $k2, $this->_modifyMap)){ eval( '$val = $this->'.$v2.';'); $sql_update .= $v2." = ".$val; } } $sql .= substr($sql_update,0,strlen($sql_update)); $sql .= 'WHERE '.$this->pk.' = '.$this->_ID; }else{ $sql = "INSERT INTO ".$this->_tableName." ("; foreach($this->arRelationMap as $k3 => $v3){ if(array_key_exists( $k3,$this->_modifyMap)){ eval('$val = $this->'.$v3.';'); $field .= "`".$v3."`,"; $values .= $val; } } $fields = substr($field,0,strlen($field)-1); $vals = substr($values,0,strlen($values)-1); $sql .= $fields." ) VALUES (".$vals.")"; } echo $sql; //$this->_DB->query($sql); } public function __destory(){ if(isset($this->ID)){ $sql = "DELETE FROM ".$this->_tableName." WHERE ".$this->pk." = ".$this->_ID; // $this->_DB_query($sql); } }}class User extends Model{ protected function getTableName(){ return "test_user"; } protected function getRelationMap(){ return array( 'id' => USER_ID, 'user_name'=> USER_NAME, 'user_age' => USER_AGE ); } public function getDB(){ return $this->_DB; }}$UserIns = new User();print_r($UserIns);?>

转载地址:http://ibyca.baihongyu.com/

你可能感兴趣的文章
利用CSS-border属性实现圆饼图表
查看>>
曲率计算公式推导
查看>>
字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
查看>>
一个例子深入理解ClassLoader
查看>>
myaliyun ECS 启动内外穿透工具shell脚本
查看>>
no.4 数据和C 06
查看>>
你好,C++(17)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
查看>>
ICTCLAS50中文分词软件“Init ICTCLAS failed!”问题
查看>>
hash
查看>>
数据结构
查看>>
缩放系列(二):所有子控件也随着缩放、手势缩放、多点触控layout
查看>>
leetcode 228: Summary Ranges
查看>>
几个收藏
查看>>
不要小看了get 与set
查看>>
深夜食堂:加班码代码太烧脑_你最爱哪种加班美食?
查看>>
Vim技能修炼教程(17) - 编译自己的Vim
查看>>
在Ubuntu11.10中安装OpenCV2.3.1的详细步骤
查看>>
SEO
查看>>
javascript 常用技巧
查看>>
Mysql常用命令行大全
查看>>