php->所謂"hook"
hook,中文"鉤子",原理是在函式內留下一個空白函式呼叫,為以後程式碼的擴充或者更改留下注入空間.
主要的應用場景是程式碼外掛化,更改程式碼執行順序.
程式碼外掛化
我們經常會遇到各種需求,並且需求不確定,當你不確定一個功能函式是否要擴充,你可以給這個函式加上一些鉤子,便於以後的擴充,使得程式碼如同一個一個的積木,需要就拿來,不需要隨時去除,降低程式碼的耦合度
假裝有程式碼
程式碼我就不貼了,因為我看了一篇文章覺得他寫的比我寫的好.
參考文章: (侵刪)
更改程式碼執行順序
透過一個函式的返回值來改變程式碼的流程,有沒有很熟悉?,bingo,我們經常使用的配置檔案就是非常典型的運用場景.既然大家都很熟悉這種應用,話不多說,出道題,大家來舉一反三
如題:
當子類需要繼承父類的建構函式時,大多數人都會想到使用parent::__construct();
但是當子類只需要父類建構函式的一部分時呢?
使用者表分為管理員和普通使用者,這時文章子類需要繼承使用者父類的普通使用者,而無需繼承管理員時,我們在例項化普通使用者後中斷構造,使其不繼續往下走.
已知:子類繼承並執行父類構造時,父類建構函式里如果出現與子類函式中相同命名的函式,子類的同名函式將覆蓋父類的同名函式.
依題意得:
使用者父類
class User{ public function __construct(){ //例項化普通使用者 $this->normal_user = new normal_user(); //鉤子函式 $this->hook(); //例項化管理員使用者 $this->admin_user = new admin_user(); } public function hook(){ //測試變數 $this->test = 1; } }
文章子類
class Article{ public function __construct(){ //執行父類建構函式 parent::__construct(); //列印測試變數 var_dump($this->test); } public function hook(){ //測試變數 $this->test = 2; //因為子類只需要例項化普通使用者類,所以中斷父類構造的執行 return false; } }
執行結果:$this->test = 2 , 並且只例項化了normal_user類
作者:DullCat
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2810854/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 所謂BAPIAPI
- 所謂併發程式設計,所謂有其三程式設計
- 聊聊所謂的cookieCookie
- 所謂軟體工程軟體工程
- 所謂的職場祕籍
- 談所謂價值投資
- 所謂Serverless,你理解對了嗎?Server
- 所謂網際網路產品
- 聊聊所謂的彈性工作制
- 所謂DNS汙染和劫持是什麼?DNS
- 所謂的執行緒安全問題執行緒
- 這就是所謂的OC的反射機制反射
- 這就是所謂的結對程式設計?程式設計
- 所謂的智慧雲端伺服器管理平臺伺服器
- 用vue開發一個所謂的數獨Vue
- 同事有話說 | 那些所謂的敏捷儀式感敏捷
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- 關於java提供的所謂的安全機制jaasJava
- 工作6年被裁員,所謂經驗根本不值錢
- 不要浪費時間去寫所謂的完美程式碼
- 姬小光前端興趣班【第003期】- 所謂樣式前端
- 堅持原則,但是不要做無所謂的爭吵
- 所謂硬碟韌體區虛擬是什麼技術?硬碟
- react hook——你可能不是“我”所認識的useEffectReactHook
- 欲知己之所防,先知彼之所攻——論Hook 技術的攻防對抗Hook
- 每天進步一點,這樣的IT所謂笨鳥先飛
- 疫情下的遊戲人:無所謂的、沉默的和遊離在外的遊戲
- 日更(二十三)-Android-所謂的Base類,模板方法模式Android模式
- 兩年程式設計師的感悟,SQL才是重點,JAVA無所謂。程式設計師SQLJava
- PHP-觀察者模式PHP模式
- PHP-工廠模式PHP模式
- PHP-單例模式PHP單例模式
- PHP-系統流程PHP
- linux中查詢IP地址時出現所謂的“亂碼”問題Linux
- 所謂真正的雲端計算,它是IT基礎設施的交付和使用模式模式
- Hook技術之Hook ActivityHook
- PHP-介面卡模式PHP模式