PHP Hook 是一種在不改變原有程序代碼的前提下,對程序進行擴展、增加、修改功能的方法。可以理解為在程序中插入一個能夠捕獲程序執行中關鍵事件的“鉤子”,從而在程序中增加任意的操作和功能。在很多高級的PHP框架或系統中,經常會出現 Hook 的應用,如 WordPress ,DedeCMS 等。下面就來詳細介紹下PHP Hook 的用法。
添加Hook
使用php用于添加 Hook 函數,其語法格式如下:
```
function add_action( $hook_name, $function_name, $priority, $accepted_args );
```
參數:
- `$hook_name`(string):要添加的 hook 名稱
- `$function_name`(callable):要添加的函數名稱
- `$priority`(int):執行優先級,默認值為10,number越小,越先執行
- `$accepted_args`(int):傳遞給回調函數的參數個數,默認為1
例如:
在WP中添加一個后臺頁面的鉤子:
```
add_action('admin_menu', 'register_my_custom_menu_page');
function register_my_custom_menu_page(){
add_menu_page( 'My Page Title', 'My Menu Title', 'manage_options', 'my-menu', 'my_menu_page', 'dashicons-admin-multisite', 6 );
}```
移除Hook
使用php函數來移除已經注冊的鉤子,其函數格式如下:
```
function remove_action( $hook_name, $function_name, $priority );
```
參數:
- `$hook_name`(string):鉤子的名稱
- `$function_name`(callable):要移除的函數名稱
- `$priority`(int):需要移除的優先級,默認為10
例如:
在WP中移除一個后臺頁面的鉤子:
```
remove_action( 'admin_menu', 'register_my_custom_menu_page' );
```
優先級
在 WP中,會有多個 Hook 掛在相同的名稱上,如鉤子名 `'the_content'` 。PHP會按照設定的優先級(priority)執行, 優先級越高執行的時間越早。
例如:
```
add_action( 'save_post', 'function1' [10 ] );
add_action( 'save_post', 'function2' [100 ] );
add_action( 'save_post', 'function3' [900 ] );
```
當`save_post`觸發時, `function3` 會先于 `function1`, `function2` 執行
總結語
以上就是PHP hook 的基本用法,使用 Hook 是一個很好的擴展程序的方法,它可以讓程序更加的靈活,以適應不同的需求。無論是在 WP還是其他的框架中,都可以使用一個類似 add_action 和 remove_action 的 API 對程序進行擴展。
網站導航
- zblogPHP模板zbpkf
- zblog免費模板zblogfree
- zblog模板學習zblogxuexi
- zblogPHP仿站zbpfang