php中的鉤子是指Hook機(jī)制,它是從windows編程中流行開(kāi)的一種技術(shù),其主要思想是提前在可能增加代碼的地方預(yù)設(shè)一個(gè)鉤子,當(dāng)我們需要重新修改代碼時(shí),把擴(kuò)展的類或者方法掛載到這個(gè)點(diǎn)即可。
鉤子即Hook機(jī)制,是從windows編程中流行開(kāi)的一種技術(shù)。其主要思想是提前在可能增加功能的地方埋好(預(yù)設(shè))一個(gè)鉤子,這個(gè)鉤子并沒(méi)有實(shí)際的意義,當(dāng)我們需要重新修改或者增加這個(gè)地方的邏輯的時(shí)候,把擴(kuò)展的類或者方法掛載到這個(gè)點(diǎn)即可。
(推薦教程:php圖文教程)
hook插件機(jī)制的基本思想:
在項(xiàng)目代碼中,你認(rèn)為要擴(kuò)展(暫時(shí)不擴(kuò)展)的地方放置一個(gè)鉤子函數(shù),等需要擴(kuò)展的時(shí)候,把需要實(shí)現(xiàn)的類和函數(shù)掛載到這個(gè)鉤子上,就可以實(shí)現(xiàn)擴(kuò)展了。
整個(gè)插件機(jī)制包含三個(gè)部分:
1、hook插件經(jīng)理類:這個(gè)是核心文件,是一個(gè)應(yīng)用程序全局Global對(duì)象。它主要有三個(gè)職責(zé):
-
監(jiān)聽(tīng)已經(jīng)注冊(cè)了的所有插件,并實(shí)例化這些插件對(duì)象。
-
注冊(cè)所有插件。
-
當(dāng)鉤子條件滿足時(shí),觸發(fā)對(duì)應(yīng)的對(duì)象方法。
(視頻教程推薦:編程入門(mén))
2、插件的功能實(shí)現(xiàn):這大多由第三方開(kāi)發(fā)人員完成,但需要遵循我們(經(jīng)理類定義)的規(guī)則,這個(gè)規(guī)則是插件機(jī)制所規(guī)定的,因插件機(jī)制的不同而不同。
3、插件的觸發(fā):也就是鉤子的觸發(fā)條件。這是一小段代碼,放置在你需要調(diào)用插件的地方,用于觸發(fā)這個(gè)鉤子。