首頁 後端開發 php教程 PHP中鉤子函數的實作與認識

PHP中鉤子函數的實作與認識

Nov 11, 2016 pm 01:19 PM

假如有這麼一段程序:

function fun(){

fun1();

fun2();

}

  fun(unun2)後執行完行後執行完新()。

  但是,假如我們想對函數做一些變化。比如說,fun是一個解析函數,我們希望後期可以提供豐富的解析函數,而究竟用哪個函數解析,我們希望在設定檔中配置。這時候就可以發揮鉤子的力量了。

  我們可以在function fun(){}中加入一個掛鉤點H,然後再執行H這個函數之前,將鉤子函數配置好,我麼就可以根據需要來解析了。

例如:

$h=config_item("parser_fun");//從設定檔中取得對應的設定資訊

function fun($data){

global $h;

}

  除此意外,PHP還可以根據字串提供自己的類,然後調用類的一個方法,傳遞某些參數,這些就為PHP程序的編寫,以及後期的維護擴展奠定了,相當堅實的基礎。

$c=get_class_name();//取得類別的名字

$m=get_method_name();//取得方法的名字

$k=$c->$m();//執行類別的某一名稱

$k=$c->$m();//執行類別的某某一個方法

原文連結:PHP中鉤子函數&實作

 

1、鉤子函數是預設並在特定的條件下觸發的。

2、鉤子函數接管程式後可以影響程式的走向。

  鉤子的完整實作應該叫做事件驅動。事件驅動分為兩個階段,第一個階段是註冊事件,目的是給未來可能發生的「事件」起一個名字,簡單的實作方法是用單例模式產生一個持久的物件或註冊一個全域變量,然後將事件名稱,以及該事件對應的類別與方法插入全域變數即可。也就是掛載一個鉤子。

  第二個階段是觸發事件,本質上就是在事件的全域變數中查詢要​​觸發的事件名稱,然後找到註冊好的類別與方法,實例化並執行。這樣子就可以擺脫傳統方式中程序必須依序的規則,進一步達成解除耦合的目的。

  鉤子函數可以截獲並處理其他應用程式的訊息。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就會先捕獲該訊息,亦即鉤子函數先得到控制權。這時鉤子函數即可以加工處理(改變)該訊息,也可以不處理而繼續傳遞該訊息,還可以強制結束訊息的傳遞。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles