亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

多種php ORM框架介紹及簡單實例代碼

2020-03-22 20:31:23
字體:
來源:轉載
供稿:網友
  •  對象關系映射(Object Relational Mapping,簡稱ORM)是一種為了解決html' target='_blank'>面向對象與關系數據庫存在的互不匹配的現象的技術。 簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。本質上就是將數據從一種形式轉換到另外一種形 式。

    ORM提供了所有SQL語句的生成,代碼人員遠離了數據庫概念。從一個概念需求(例如一個HQL)映射為一個SQL語句,并不需要什么代價,連1%的性能損失都沒有。真正的性能損失在映射過程中,更具體地講,是在對象實例化的過程中www.it165.net。

    目前PHP 開源比較有名的 ORM 有以下幾個:

    1、Propel

    Propel是一個適用于PHP5的ORM映射(Object Relational Mapping)框架,它基于Apache Torque提供對象持久層支持。它通過XML格式的模式定義文件和相應的配置文件來生成SQL和類,它允許你使用對象代替SQL來讀寫數據庫表中的記 錄。Propel提供一個生成器來為你的數據模型創建SQL定義文件和PHP類。開發者也可以十分簡單的定制生成的類,我們還可以通過XML, PHP類和Phing構建工具把Propel集成到已有的應用開發框架中去.例如PHP框架symfony的1.2以前的版本就是默認使用了精簡版的 Propel作為默認ORM框架。

    官方網站:http://www.propelorm.org/

    2、Doctrine

    Doctrine是一個PHP的ORM框架,它必須運行在>=php5.2.3版本上,它是一個功能強大的數據抽象層。

    它的一個主要特征就是使用面向對象的方式來實現數據庫查詢的封轉,它底層通過一個類似 Hibernate HQL的DQL的查詢語句進行數據庫查詢,這使得開發的靈活性更強,大大減小了重復代碼。相比Propel,Doctrine的優點在于它支持支持全文檢 索,Doctrine的文檔一直就比Propel要全面豐富,社區更活躍,而且使用起來更加自然、更易閱讀、更接近原生SQL。性能方面也略微優于 Propel。同樣你也可以可以很方便的把Doctrine集成到現有的應用框架中去,比如PHP框架symfony的1.3以后的版本將 Doctrine作為默認的ORM框架,同時也可以將Doctrine和Codeigniter整合起來。

    官方網站: http://www.doctrine-project.org/

    3、EZPDO

    EZPDO是一個十分輕量級的PHP ORM框架。EZPDO的作者的本意旨在降低復雜的ORM學習曲線,盡可能在ORM的運行效率和功能之間做一個平衡點,它是我至今用過的最簡單的ORM框 架,我目前還想將它集成到我的CoolPHP SDK中來,而且運行效率相當不錯,功能也基本能滿足需求,只不過ESPDO的更新比較緩慢。

    官方網站:http://www.ezpdo.net/blog/?p=2

    4、RedBean

    RedBean是一個易于使用,輕量級PHP ORM框架,提供對MySQL, SQLite&PostgreSQL的支持。RedBean架構非常靈活,核心也非常簡約,開發者可以很方便的通過插件來擴展功能。

    官方網站:http://www.redbeanphp.com/

    5、其他

    國內的fleaphp開發框架基于TableDataGateway實現ORM實現;Zend Framework除了提供對 SQL 語句的封裝以外,也同樣實現了TableGateway、TableRowSet、TableRow的實現;還有一些類似Rails的 ActiveRecord實現的解決方案。

    總的來說,一般ORM框架對付簡單的應用系統來說都能滿足基本需求,可以大大降低開發難度,提高開發效率,但是它在SQL優化方面,肯定是比純 SQL語言要差一些,對復雜關聯、SQL內嵌表達式的處理可能不是很理想。也許這主要是由于PHP本身對象持久化的問題,導致ORM效率過低,普遍比純 SQL要慢。但是這些都是有辦法解決的,最基本的解決性能的方案,我們可以通過緩存來提高效率,Hibernate來說,雖然配置比較繁雜,但是它通過靈 活的使用二級緩存和查詢緩存極大的緩解數據庫的查詢壓力,極大的提升了系統的性能。

    如果你想自己實現一個PHP的ORM,下面的可以參考下:

    <?phpabstract class Model{   protected $pk = 'id';   protected $_ID = null;   protected $_tableName;   protected $_arRelationMap;   protected $_modifyMap;   protected $is_load = false;   protected $_blForDeletion;   protected $_DB;   public function __consturct($id = null){       $this->_DB = mysql_connect('http://www.xiaocainiao.net','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);?>

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    欧美性资源免费| 成人做爰www免费看视频网站| 欧美激情aaaa| 国产亚洲欧美aaaa| 国产综合在线观看视频| 成人97在线观看视频| 久久在线免费视频| 高清亚洲成在人网站天堂| 久久免费高清视频| 91九色综合久久| 精品亚洲一区二区三区| 韩国一区二区电影| 国产精品美女主播| 日韩欧美aⅴ综合网站发布| 欧美国产日韩中文字幕在线| 久久久久久久久中文字幕| 国产精品免费一区二区三区都可以| 播播国产欧美激情| 国产成人涩涩涩视频在线观看| 日本精品视频在线| 中日韩美女免费视频网站在线观看| 国产精品高清网站| 不卡av电影在线观看| 最近2019年中文视频免费在线观看| 日韩精品视频在线观看免费| 91精品国产免费久久久久久| 91成人在线观看国产| 精品偷拍一区二区三区在线看| 亚洲欧美一区二区三区久久| 精品成人乱色一区二区| 色噜噜狠狠色综合网图区| 这里只有精品视频| 午夜精品久久久99热福利| 欧美老少做受xxxx高潮| 国产精品综合不卡av| 欧美极品欧美精品欧美视频| 国产精品十八以下禁看| 亚洲日本成人网| 欧美成人精品三级在线观看| 欧美中文字幕视频在线观看| 国产精品视频久久| 亚州成人av在线| 亚洲热线99精品视频| 欧美在线观看网址综合| 91精品在线影院| 精品亚洲一区二区三区在线观看| 欧美成人三级视频网站| 亚洲综合色av| 97超碰国产精品女人人人爽| 久久天天躁夜夜躁狠狠躁2022| 5252色成人免费视频| 国产精品久久久久久久电影| 欧美精品精品精品精品免费| 国产成人综合久久| 国产一区二区av| 成人羞羞国产免费| 亚洲国产精彩中文乱码av| 日韩av手机在线观看| 亚洲国内精品在线| 欧美大片免费观看在线观看网站推荐| 亚洲精品久久久久久久久久久| 乱亲女秽乱长久久久| 日韩免费在线看| 亚洲电影免费观看高清完整版在线观看| 日韩中文字幕视频在线观看| xxav国产精品美女主播| 伊人久久大香线蕉av一区二区| 欧美在线亚洲在线| 97热精品视频官网| 欧美国产日产韩国视频| 7m第一福利500精品视频| 97超级碰碰碰久久久| 91精品久久久久久久久青青| 欧美在线视频网| 日韩中文在线中文网三级| 国产精品视频白浆免费视频| 国产精品免费观看在线| 亚洲图片在线综合| 欧美日韩成人黄色| 久久精品国产亚洲精品2020| 欧美激情精品久久久久| 欧美日韩视频免费播放| 欧美香蕉大胸在线视频观看| 亚洲自拍偷拍区| www亚洲欧美| 欧美亚洲国产日本| 国产91成人在在线播放| 国产一区二区在线免费视频| 日韩在线免费av| 97免费在线视频| 欧美日韩国产成人在线| 色噜噜狠狠狠综合曰曰曰| 91成人天堂久久成人| 亚洲a∨日韩av高清在线观看| 国产精品91视频| 欧美乱大交做爰xxxⅹ性3| 午夜精品久久久久久久白皮肤| 久久久久久久久久久国产| 黄色一区二区三区| 亚洲精品免费一区二区三区| 亚洲欧美制服丝袜| 在线观看日韩av| 国产精品视频区1| 久久久91精品国产一区不卡| 精品国产一区二区三区久久狼黑人| 国产精品白丝jk喷水视频一区| 日韩成人免费视频| 亚洲欧美日本伦理| 91久久久在线| 欧美成人免费一级人片100| 欧美成人精品一区二区三区| 欧美在线观看网址综合| 国产精品视频xxx| 久久久视频免费观看| 欧美激情视频在线| 国产精品一区二区av影院萌芽| 国产中文日韩欧美| 亚洲人在线观看| 国内精品在线一区| 欧美日韩aaaa| 高清一区二区三区日本久| 亚洲欧美另类自拍| 久久五月情影视| 久久久久久九九九| 国产一区二区三区高清在线观看| 成人在线播放av| 日韩成人激情在线| 久久人人看视频| 久久久亚洲精选| 浅井舞香一区二区| 色先锋资源久久综合5566| 亚洲色图25p| 亚洲欧美精品中文字幕在线| 成人在线播放av| 亚洲一区二区久久| 国产日韩欧美黄色| 成人激情免费在线| 欧美国产日韩一区二区在线观看| 国产精品久久久亚洲| 国产综合视频在线观看| 久久久久久久久综合| 色婷婷久久一区二区| 欧美性生交xxxxx久久久| 成人久久一区二区三区| 日韩中文字幕网站| 精品一区二区三区电影| 久久精品国产99国产精品澳门| 国产精品激情av电影在线观看| 成人精品视频在线| 欧美精品免费看| 日韩黄色高清视频| 岛国视频午夜一区免费在线观看| 欧美成aaa人片免费看| 在线观看国产成人av片| 日韩精品免费在线| 日韩av大片在线| 久久久成人精品| 亚洲丁香婷深爱综合| 亚洲天堂日韩电影| 成人av在线天堂| 国产美女精品视频免费观看| 成人精品网站在线观看| 中文国产亚洲喷潮| 国产丝袜精品第一页|