摘要:當(dāng)有值改變時調(diào)用實現(xiàn)類繼承觀察類的方法即完成通知方法里面可以寫被通知之后的操作,如打印字符串等等觀察者模式給程序員一個鼓勵唄微信支付寶
1.__get __set
class Test { private $arr = array( "x"=>null, "y"=>null ); function __get($property) { if(array_key_exists($property,$this->arr)) { return $this->arr[$property]; } else { print "error:can not read this property is not exist other than x or y "; } } function __set($property,$value) { if(array_key_exists($property,$this->arr)) { $this->arr[$property] = $value; } else { print "error:can not write this property is not exist other than x or y "; } } } $cl = new Test(); $cl->x = 1; echo $cl->x; $cl->t = 2; echo $cl->t;
//結(jié)果是 1 error:can not write this property is not exist other than x or y error:can not read this property is not exist other than x or y
2.__call 函數(shù)使用
class HelloWorld { function display($time) { for($i=0;$i<$time;$i++) { print "hello world "; } } } class callHelloWorld { private $obj; function __construct() { $this->obj = new HelloWorld(); } function __call($method,$arg) { return call_user_func_array(array($this->obj,$method),$arg); } } $me = new callHelloWorld(); $me->display(3);
結(jié)果是
hello world hello world hello world
3.迭代器
class numberSquare implements Iterator { private $start; private $end; private $cur; public function __construct($start, $end) { $this->start = $start; $this->end = $end; } public function rewind() { $this->cur = $this->start; } public function key() { return $this->cur; } public function current() { return pow($this->cur,3); } public function next() { $this->cur++; } public function valid() { return $this->cur <= $this->end; } } $obj = new numberSquare(2,5); foreach($obj as $key => $value) { print "the square of $key is $value
"; }
結(jié)果是
the square of 2 is 8 the square of 3 is 27 the square of 4 is 64 the square of 5 is 125
4.工廠模式
//定義抽象類 user類 讀權(quán)限給,修改,刪除權(quán)限不給 abstract class User { private $name = null; function __construct($name) { $this->name = $name ; } function getName() { return $this->name; } //權(quán)限方法 function hasReadPermission() { return true; } function hasModifyPermission() { return false; } function hasDeletePermission() { return false; } //定制方法 function wantsFlsahInterFace() { return true; } } class GuestUser extends User { } class CustomerUser extends User { //customer 有修改權(quán)限 function hasModifyPermission() { return true ; } }
class AdminUser extends User { function hasModifyPermission() { return true ; } function hasDeletePermission() { return true ; } function wantsFlsahInterFace() { return false; } } class UserFactory { private static $users = array( "andy"=>"Admin", "tom"=>"customer", "jack"=>"guest" ); static function create($name) { switch(self::$users[$name]) { case "Admin" : return new AdminUser($name); break; case "customer" : return new CustomerUser($name); break; case "guest" : return new GuestUser($name); break; default: break; } } }
function boolToString($b) { if($b == true) { return "yes"; } else { return "no"; } } function displayPermission( $obj) { print $obj->getName() . ""s permission: "; print "Read: " . boolToString($obj->hasReadPermission()); print "Modify: " . boolToString($obj->hasModifyPermission()); print "Delete: " . boolToString($obj->hasDeletePermission()); } function displayRequirement( $obj) { if($obj->wantsFlsahInterFace()) { print $obj->getName() . "require flash "; } } $login = array("andy","str","jack"); foreach($login as $key =>$val) { displayPermission(UserFactory::create($val)); }
結(jié)果是
received updated received updated //實例化時不會有任何輸出,直到有一個事件或者一個參數(shù)被設(shè)置才有所行動,一開始有一個觀察類。實現(xiàn)類繼承觀察類,實現(xiàn)類里面有改變值的類在初始化的時候?qū)嵗幌隆.?dāng)有值改變時調(diào)用實現(xiàn)類繼承觀察類的方法(即完成通知)方法里面可以寫被通知之后的操作,如打印字符串等等
5.觀察者模式
**
給程序員一個鼓勵唄!**
微信
支付寶
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/23154.html
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:名字背后的故事原本的簡稱為,是拉斯姆斯勒多夫為了維護(hù)個人網(wǎng)頁,而用語言開發(fā)的一些程序集。關(guān)于相互連接,已經(jīng)支持了對對象的即時連接,并且可以透明地將其用作對象。將所有的功能標(biāo)準(zhǔn)化于堅實的擴(kuò)展,并且還增加了,以及支持以擴(kuò)充其功能。 PHP 是一種被廣泛應(yīng)用的開源通用計算機(jī)腳本語言,尤其適用于 Web 開發(fā)。PHP 的語法借鑒吸收 C 語言、Java 和 Perl 等流行計算機(jī)語言的特點(diǎn),易...
閱讀 984·2021-11-23 09:51
閱讀 3470·2021-11-22 12:04
閱讀 2716·2021-11-11 16:55
閱讀 2921·2019-08-30 15:55
閱讀 3222·2019-08-29 14:22
閱讀 3351·2019-08-28 18:06
閱讀 1240·2019-08-26 18:36
閱讀 2126·2019-08-26 12:08