深入php面向?qū)ο?、模式與實踐

深入php面向?qū)ο?、模式與實踐

ID:30826670

大小:568.88 KB

頁數(shù):18頁

時間:2019-01-03

深入php面向?qū)ο?、模式與實踐_第1頁
深入php面向?qū)ο?、模式與實踐_第2頁
深入php面向?qū)ο?、模式與實踐_第3頁
深入php面向?qū)ο?、模式與實踐_第4頁
深入php面向?qū)ο蟆⒛J脚c實踐_第5頁
資源描述:

《深入php面向?qū)ο?、模式與實踐》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、深入php面向?qū)ο?、模式與實踐這篇文章主要介紹了深入php面向?qū)ο蟆⒛J脚c實踐,需要的朋友可以參考下1語法l.i基礎(chǔ)語法clone需耍操作原對象,但又不想影響原對彖.復(fù)制代碼代碼如下:$K_back=clone$K;基本數(shù)據(jù)類型和數(shù)組都為真復(fù)制,即為真副本,當屬性為對象時,為假復(fù)制,改變副本仍會影響原對象.解決方案:〃在原對象中添加function_clone(){$this->對象=clone$this->對象}—clone在clone前自動觸發(fā),可以執(zhí)行一-些在備份前的屬性操作.2、&傳遞引用方法引用傳遞,改變源對象復(fù)

2、制代碼代碼如下:functionset_K(&$K){...}function&get_K(){...}3、static延遲靜態(tài)綁定應(yīng)用場景:Dog類和Person類都需要一個返回實例化的方法,Dog類和Person類都繼承于Animal抽彖類.abstractclassAnimal{publicstaticfunctioncreate(){〃實例化調(diào)用類returnnewstaticf);}}classPersonextendsAnimal{...}〃返回Person實例化類Person::create();4、攔截器g

3、et($property)/訪問未定義的屬性時調(diào)用.—set($property,$value),給未定義的屬性賦值時被調(diào)用.—isset($property),對未定義屬性調(diào)用isset()方法時調(diào)用._unset($property),對未定義屈性調(diào)用unset()方法時調(diào)用._call($methodz$arg_array)3^用未定義方法時調(diào)用.-call很有用,但要慎用,因為太靈活.應(yīng)用場景:有一個專門打印Person類信息的Person_Writer類,如果通過Person類調(diào)用Person_Writer類./

4、/Person委托Person_Writer類處理打印事務(wù).classPerson{private$writer;???function_call($method_name,$args){if(methood_exists($this->wirteG$method_name)){return$this->writer->method_name($this);}}〃高級_call寫法,當委托方法參數(shù)不確定時使用.function_call($method_name,$args){〃當然這里這樣寫法意義不大,但是call一般都

5、是用call_user_func_array調(diào)用$args=$this;if(methood_exists($this->wirterz$method_name)){returncall_user_func_array(array($this->writer,$method_name)z$args);)}}}5、回調(diào)函數(shù)應(yīng)用場景:3個類‘Product類,Product_Sale類,Product_Totalizer類,要實現(xiàn):當賣出Product總共價格超過指定金額時,輸出警告.//ProductclassProduct

6、{public$name;public$price;}//Product_SaleclassProduct_Sale{private$callbacks;〃記錄回調(diào)函數(shù)functionregister_callback($callback){if(!is_callback($callback)){thownewExceptionf'callbacknotcallable');}$this->callbacks[]=$callback;}〃執(zhí)行回調(diào)函數(shù)functionsale($product){print,,{$produ

7、ct->name}:處理中H;foreach($this->callbacksas$callback){call_user_func($callback,$product);}}}//Produce_TotalizerclassProduce_Totalizer{staticfunctionwarn_amount($amt){$count=0;returnfunction($produce)use($amt,&count){$count+=$produce->price;printHcount:{count}Hif

8、($count>$amt){print“超過指定金額{$amt}啦J}};}}〃模擬場景$product_sale=newProduce_Sale();〃指定報警金額為8塊$product_sale=register_callback(Produce_Totalizer::warn_amount(8))

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。