濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP __call()方法實現(xiàn)委托示例

PHP __call()方法實現(xiàn)委托示例

熱門標簽:400電話蘭州申請請 百度地圖標注偏差 百度地圖怎樣標注圖標 電銷機器人問門薩維品牌my 余姚電話機器人 咸寧銷售電銷機器人系統(tǒng) 廣東廣州在怎么申請400電話 外呼系統(tǒng)能給企業(yè)帶來哪些好處 開發(fā)地圖標注類網(wǎng)站

本文實例講述了PHP __call()方法實現(xiàn)委托。分享給大家供大家參考,具體如下:

委托是指一個對象轉(zhuǎn)發(fā)或者委托一個請求給另一個對象,被委托的一方替原先對象處理請求。這類似于繼承,和在子類中調(diào)用父類的方法有點兒相似。

但在繼承時,父類與子類的關系是固定的,而使用委托則可以在代碼運行時改變使用的對象,這意味著委托比繼承具有更大的靈活性。

1、創(chuàng)建一個類來將Person類的信息格式化并輸出:

class PersonWriter{
 public function writeName(Persion $p){
  print $p->getName()."\n";
 }
 public function writeAge(Persion $p){
  print $p->getAge()."\n";
 }
}

2、下面的代碼集合使用__call()方法和PersonWriter類對象來實現(xiàn)Person類:

class Person {
 private $writer;
 function __construct(PersonWriter $writer;){
  $this->writer = $writer;
 }
 function __call($methodname,$args){
  if(method_exists($this->writer,$methodname)){
   return $this->writer->$methodname($this);
  }
 }
 //...
}

代碼中Person類接收一個PersonWriter對象作為構造方法的參數(shù),并將它保持在屬性變量writer。

__call()方法中,使用參數(shù)$methodname,檢查PersonWriter對象中是否存在同名方法。如果相應方法存在,我們就委托PersonWriter對象來處理(調(diào)用相應方法),把當前類(Person類)的實例作為參數(shù)傳遞給PersonWriter對象(使用$this偽變量)。

因此,如果這樣調(diào)用Person類:

$person = new Person(new PersonWriter());
$person->writeName();

__call()方法會被調(diào)用。然后會在PersonWriter對象中查找writeName()方法,并調(diào)用之。

更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數(shù)學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php面向?qū)ο蟮姆椒ㄖ剌d兩種版本比較
  • php繼承中方法重載(覆蓋)的應用場合
  • PHP使用方法重載實現(xiàn)動態(tài)創(chuàng)建屬性的get和set方法
  • PHP利用func_get_args和func_num_args函數(shù)實現(xiàn)函數(shù)重載實例
  • php中拷貝構造函數(shù)、賦值運算符重載
  • PHP小技巧之函數(shù)重載
  • PHP實現(xiàn)重載的常用方法實例詳解
  • PHP面相對象中的重載與重寫
  • PHP面向?qū)ο蟪绦蛟O計重載(overloading)操作詳解
  • PHP面向?qū)ο蟪绦蛟O計模擬一般面向?qū)ο笳Z言中的方法重載(overload)示例
  • php魔術函數(shù)__call()用法實例分析
  • php 使用 __call實現(xiàn)重載功能示例

標簽:臨沂 鷹潭 十堰 銅陵 麗江 重慶 衡陽 巴彥淖爾

巨人網(wǎng)絡通訊聲明:本文標題《PHP __call()方法實現(xiàn)委托示例》,本文關鍵詞  PHP,call,方法,實現(xiàn),委托,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP __call()方法實現(xiàn)委托示例》相關的同類信息!
  • 本頁收集關于PHP __call()方法實現(xiàn)委托示例的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    五华县| 柳州市| 乌拉特后旗| 曲水县| 东宁县| 三门峡市| 绵竹市| 定远县| 秦皇岛市| 阳原县| 乐至县| 额尔古纳市| 金秀| 信阳市| 德安县| 留坝县| 兖州市| 和龙市| 望江县| 榆社县| 德安县| 襄城县| 天津市| 二连浩特市| 新野县| 卓尼县| 凌海市| 沙河市| 邢台市| 平塘县| 江达县| 年辖:市辖区| 百色市| 海丰县| 宁武县| 犍为县| 玛沁县| 故城县| 宁海县| 信宜市| 驻马店市|