http://www.devshed.com/c/a/PHP/PHP-Services-Layers-Data-Mappers/
https://stackoverflow.com/questions/1980015/model-mapper-relationship
http://assets.en.oreilly.com/1/event/36/PHP%20Object-Relational%20Mapping%20Libraries%20In%20Action%20Presentation.pdf
https://github.com/marcelgsantos/learning-oop-in-php
https://github.com/domnikl/DesignPatternsPHP/tree/master/Structural/DataMapper
https://www.sitepoint.com/handling-collections-of-aggregate-roots/
https://www.sitepoint.com/integrating-the-data-mappers/
https://github.com/TwisterMW/php-dal-model
http://www.phpdao.com/
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <title>object 对象</title> <meta name="keywords" content="geovindu"> <meta name="description" content="涂聚文"> </head> <body> <?php // object class User { public $username,$password; function getName() { return $this->username; } function getPassword() { return $this->password; } function Save() { echo("保存成功!"); } } // UserDesc 继承 User类 class UserDesc extends User { public $realname,$email,$birthday; function getRealname() { return $this->realname; } function getEmail() { return $this->email; } function getBirthday() { return $this->birthday; } } function getMillisecond() { list($s1,$s2) = explode(' ', microtime()); return (float)sprintf('%.0f', (floatval($s1)+floatval($s2)) * 1000); } $object=new User; print_r($object);echo("<br/>"); $object->username="geovindu"; // $object->password="888888";// 赋值 print_r($object);echo("<br/>"); $object->Save() ;//显示文字 echo("姓名:".$object->getName()); //显示对象的name值 echo("密码:".$object->getPassword()); $object2=new UserDesc; $object2->birthday=date('Y-m-d H:i:s'); $object2->email='geovindu@163.com'; $object2->realname='涂聚文'; $object2->username='geovindu'; $object2->password='8888'; print_r($object2);echo("<br/>"); // class Collection implements ArrayAccess,IteratorAggregate { public $objectArray = Array(); //**these are the required iterator functions function offsetExists($offset) { if(isset($this->objectArray[$offset])) return TRUE; else return FALSE; } function & offsetGet($offset) { if ($this->offsetExists($offset)) return $this->objectArray[$offset]; else return (false); } function offsetSet($offset, $value) { if ($offset) $this->objectArray[$offset] = $value; else $this->objectArray[] = $value; } function offsetUnset($offset) { unset ($this->objectArray[$offset]); } function & getIterator() { return new ArrayIterator($this->objectArray); } //**end required iterator functions public function doSomething() { echo "I'm doing something"; } } // class CustomContact { protected $name = NULL; protected $tel=null; public function set_name($name) { $this->name = $name; } public function get_name() { return ($this->name); } public function settel($tel) { $this->tel=$tel; } public function gettel() { return ($this->tel); } } // $bob = new Collection(); $bob->doSomething(); $du[]=new CustomContact(); $du[5]=new CustomContact(); $du[0]->set_name("geovindu"); $du[0]->settel("13824350518"); $du[5]->set_name("sibodu"); $du[5]->settel("075582397507"); echo("<br/>"); $num=1; foreach ($du as $aContact) { echo("序号:".$num."<br/>"); echo("姓名:".$aContact->get_name() . " <br/>"); echo("电话:".$aContact->gettel() . " <br/>"); $num=$num+1; } $arry =new ArrayObject($du); print_r($arry); // 显示 foreach($arry as $obj) { echo "姓名:" . $obj->get_name(); echo "电话:". $obj->gettel(); } ?> </body> </html>
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <title>接口Creating a Data Abstraction Layer in PHP</title> <meta name="keywords" content="geovindu"> <meta name="description" content="涂聚文"> <meta name="author" content="涂聚文"> </head> <body> <?php //https://github.com/ADOdb/ADOdb //https://github.com/AdamB7586/pdo-dbal //https://github.com/daijulong/generator interface Maxmin{ public function getMax(); public function getMin(); } class msm implements Maxmin{ private $aa=33; private $bb=66; //具体实现接口声明的方法 public function getMax() { return $this->bb; } public function getMin() { return $this->aa; } public function getOther(){ return 'geovindu:hi,how are you.'; } } $msm=new msm(); echo($msm->getMax()); echo("<br/>"); echo($msm->getMin()); echo("<br/>"); echo($msm->getOther()); ?> </body> </html>
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <title>多态性</title> <meta name="keywords" content="geovindu"> <meta name="description" content="涂聚文"> <meta name="author" content="涂聚文"> </head> <body> <?php //定义蔬菜抽象类 abstract class Vegetables{ //抽象方法 abstract function go_Vegetables(); } //马铃薯继承蔬菜类 class Vegetables_potato extends Vegetables{ //重写抽象方法 public function go_Vegetables(){ echo("我是马铃薯"); } } //萝卜继承蔬菜类 class Vegetables_radish extends Vegetables{ public function go_Vegetables() { echo("我是萝卜"); } } //自定义方法根据对象调用不同的方法 function change($obj) { if($obj instanceof Vegetables) { $obj->go_Vegetables(); } else { echo("输入的参数不是一个对象"); } } try { echo("实例化Vegetables_potato:"); change(new Vegetables_potato()); echo("<br/>"); echo("<br/>"); echo("实例化Vegetables_radish:"); change(new Vegetables_radish()); } catch(Exception $ex) { echo("异常信息:".$ex->getMessage()); } ?> </body> </html>
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <title>通过接口实现多态</title> <meta name="keywords" content="geovindu"> <meta name="description" content="涂聚文"> <meta name="author" content="涂聚文"> </head> <body> <?php //定义接口 interface Vegetables{ //定义接口方法 public function go_Vegetables(); } //马铃薯继承蔬菜类 class Vegetables_potato implements Vegetables{ //重写抽象方法 public function go_Vegetables(){ echo("我是马铃薯"); } } //萝卜继承蔬菜类 class Vegetables_radish implements Vegetables{ public function go_Vegetables() { echo("我是萝卜"); } } //自定义方法根据对象调用不同的方法 function change($obj) { if($obj instanceof Vegetables) { $obj->go_Vegetables(); } else { echo("输入的参数不是一个对象"); } } try { echo("实例化Vegetables_potato:"); change(new Vegetables_potato()); echo("<br/>"); echo("<br/>"); echo("实例化Vegetables_radish:"); change(new Vegetables_radish()); } catch(Exception $ex) { echo("异常信息:".$ex->getMessage()); } ?> </body> </html>