本文阐述了用PHP实现的数据对象映射模式。分享给大家参考,如下:
或者说代码:下面是遵循策略模式的psr-0代码规范
数据表:
数据库连接文件Db.php(如果没有,可以在前面的文章《PHP单例模式数据库连接类与页面静态化》中找到)自动加载类文件Config.php(如果没有,可以在前面的文章《PHP策略模式》中获得)
DataUser.php入境文件
?phpdefine('BASEDIR ',_ _ DIR _ _);//自动加载此文件中未定义的类require‘config . PHP’;spl _ autoload _ register(' config : auto lad ');//get Data $ user=new Data(1);var_dump($user-id,$user-name,$ user-money);//如果要修改数据,$ user-id=1;$用户名='张建平';$ user-money=10000;获取文件Data.php的数据
?Phpclass Data{//数据项公共$ idpublic $ name公共美元;//数据库连接对象受保护$ con//查询data public function _ _ construct($ ID){//连接数据库$ this-con=db :3360 getinstance()-Connect();//查询数据$ RES=$ this-con-query('从id='的帐户中选择* ')。$ id。limit 1’);$ data=$ RES-fetch(PDO : fetch _ ASSOC);//存储检索到的数据项$ this-id=$ data[' id '];$ this-name=$ data[' name '];$ this-money=$ data[' money '];}//修改数据的析构函数,public function _ _ destroy(){ $ this-con-query(' update帐套名=' {$ this-name} ',' money={$ this-money} ',其中id={ $ this-id } ');}}?让我们使用工厂模式、注册树模式和数据对象映射模式来完善这个例子
数据库连接文件Db.php自动加载类文件Config.php获得数据文件Data.php我们将更改原始条目文件:
DataUser.php
?phpdefine('BASEDIR ',_ _ DIR _ _);需要“config . PHP”;spl_autoload_register(配置: autoload);类数据用户{ public function index(){//使用工厂模式生成对象$ user=factory :3360 getuser(1);var _ dump($ user-id);$ this-name();$ this-money();}公共函数名(){ $ user=factory : getuser(1);var _ dump($用户名);}公共函数money(){ $ user=factory : getuser(1);var _ dump($ user-money);}}?Factory.php工厂
?PHP类工厂{ Static Function GetUser($ id){//这里使用的是注册器模式,否则在上面的文件中,当使用工厂模式生成对象时,会多次创建对象,占用大量资源。//根据不同的ID $key='user_ '将其插入注册树对象。$ id//从注册器中取出对象$ user=register :3360 get($ key);//如果它不在注册器中,创建一个对象并用if(!isset($ user)){ $ user=new Data($ id);$ user=register :3360 set($ key,$ user);}返回$ user}}?Registrator注册员等级
?Phpclass Register{ //存储对象的变量protected static $对象;//在注册器公共静态函数集中注册($ key,$ value){ self :3360 $ object[$ key]=$ value;}//检索公共静态函数get($ key){从注册器返回self :3360 $ object[$ key];}//从注册器中删除公共静态函数_ unset($ key){ unset(self :3360 $ object[$ key]);}}?如果此时将Data.php更改为Data1.php,则在不使用工厂模式时,需要逐个更改类名。现在我们只需要在工厂模式下更改它们,就可以打印出每个对象。这时,我们会发现这三个对象都是一样的,因为我们使用的是注册器模式。
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010
希望本文对PHP编程有所帮助。