說到外掛程式,我們應該不陌生。但是不知道同學們有沒有想過這些外掛程式是怎麼實現的呢?外掛程式的執行原理是什麼呢?
假如有一天你開發的專案,老闆突然讓你做乙個有外掛程式的功能,這樣就可以讓更加多的開發者很方便地加入到專案功能開發中去。
至今為止,所有的開源專案基本都是支援外掛程式功能的,例如國內比較出名的discuz,phpcms等
那麼下面我們就來小探外掛程式的實現原理:
<?php/****************************************
* 演算法描述:
* (1)建立乙個陣列,這個陣列專門用於儲存鉤子標識
* (2)建立乙個函式,該函式可以把要執行的外掛程式函式名稱放到鉤子上
* (3)建立乙個函式,該函式可以執行鉤子上的所有外掛程式函式以及可以傳入外掛程式函式的引數
* (4)所謂的鉤子是什麼?這是乙個很蛋疼的東西, 就是乙個名稱而已,
* 這個名稱就用來做標識用的,就像人的姓名一樣,沒有什麼特別,你可以隨便起,但是執行的時候就要用它,
* 就好像你叫我去做事,就得叫我名字一樣
* (5)什麼是外掛程式函式?把函式的名稱掛在上面所說的鉤子上面,然後執行的時候,只需把鉤子的函式名稱全部遍歷出來,並執行這些函式就可以實現外掛程式的功能了
* (6)怎麼才能更加明白?把下面的**看懂,分解實現,自己一小步一小步的寫一遍。如果看不懂,想想為什麼?是有些系統函式卡住了,還是邏輯有問題
***************************************/
/** * 該函式在外掛程式中呼叫,掛載外掛程式函式到預留的鉤子上
* * @param string $hook 鉤子
* @param string $actionfunc 外掛程式函式
* @return boolearn
*/function addaction($hook,$actionfunc)
if(!in_array($actionfunc,$myhooks[$hook]))
return true;
}/**
* 執行掛在鉤子上的函式,支援多引數 eg:runaction('head','lijinhuan','school');
* * @param string $hook 鉤子
*/function runaction($hook)
}$myhooks = array();
/********** ****** like this ***********/
function go($name,$where)
function run()
addaction('head','go');
addaction('head','run');
runaction('head','lijinhuan','school');
/********** out put:lijinhuan go school we run ***************/
?>
xcode如何在乙個專案中建多個C程式
mac小白,對使用xcode過程中的問題進行一些歸納總結,希望對您也有所啟發.c語言工程有且只有乙個main函式,並不限定檔案數量,你可以建立多個.c檔案,然後通過標頭檔案的引用來 連線 多個.c檔案。而想將多個無關c程式置於乙個專案中是不可行的,因為此時產生了多個main函式。建立呼叫方法如下 第...
android 如何在自己的專案中使用 MVP
官方給我們寫了一些mvp的樣例工程,用不同的概念和工具實現同乙個todo專案。github位址 雖然在官方推出這套mvp開源用例之前,網路上也有很多優秀的開源專案教大家如何使用mvp模式,如果你之前沒看過,其實現在還有乙個好處,直接按官方的來做就是了 官方一出馬,其他的類似專案就啞火了 我看了一下官...
如何在自己工程專案中使用TouchJSON框架
前提 配置到某具體的工程專案中 複製touchjson框架源 到自己的工程專案中,即將touchjson source目錄及檔案拷貝到專案中,在新增到工程專案中時確認選中 copy items into destination groups folder if needed 項。轉換json資料到物...