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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 所謂併發程式設計,所謂有其三程式設計
- 聊聊所謂的cookieCookie
- us所謂的政治“精英”
- 所謂的職場祕籍
- 談所謂價值投資
- Teradata退了? 無所謂,GBASE會出手
- 聊聊所謂的彈性工作制
- 所謂DNS汙染和劫持是什麼?DNS
- 這就是所謂的OC的反射機制反射
- 所謂“Metaverse”背後的四個命題Metaverse
- 從來就沒什麼所謂“彎道超車”
- 何入CTF的“門”?——所謂入門就是入門
- 所謂的智慧雲端伺服器管理平臺伺服器
- 同事有話說 | 那些所謂的敏捷儀式感敏捷
- 如何入CTF的“門”?——所謂入門就是入門
- react hook——你可能不是“我”所認識的useEffectReactHook
- 工作6年被裁員,所謂經驗根本不值錢
- 欲知己之所防,先知彼之所攻——論Hook 技術的攻防對抗Hook
- 創業札記(四)- 每個人都有自己所謂的成功方式創業
- 日更(二十三)-Android-所謂的Base類,模板方法模式Android模式
- linux中查詢IP地址時出現所謂的“亂碼”問題Linux
- 這些精英程式設計師平均年薪110萬:所謂高薪,皆是辛苦!程式設計師高薪
- PHP-工廠模式PHP模式
- PHP-單例模式PHP單例模式
- 疫情下的遊戲人:無所謂的、沉默的和遊離在外的遊戲
- 《策魂三國》這款所謂的正統三國戰棋香嗎?
- 所謂的脫鉤只是錯覺,永葆穩定才是USDD的價值底色
- php-多型的理解PHP多型
- PHP-介面卡模式PHP模式
- PHP-觀察者模式PHP模式
- PHP-註冊樹模式PHP模式
- PHP-責任鏈模式PHP模式
- hook初識之inline hookHookinline
- Hook技術之Hook ActivityHook
- hook!Hook
- 【2024.11.05】所謂照片,不過是在時間長河裡刻舟求劍罷了
- 所謂武功再高也怕菜刀-分割槽、分庫、分表和分散式的優劣分散式
- PHP->GO 基礎-函式PHPGo函式