国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法

CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法

2021-01-20 16:56yanhui_wei PHP教程

這篇文章主要介紹了CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法,分析了Hook的原理與擴展CI框架的相關技巧,需要的朋友可以參考下

本文實例講述了CI框架源碼解讀之利用Hook.php文件完成功能擴展的方法。分享給大家供大家參考,具體如下:

看了hook.php的源碼,就知道CI使用hook來進行擴展的原理了。

hook的基本知識 http://codeigniter.org.cn/user_guide/general/hooks.html

CI中hook的使用經歷了一個:開啟hook,定義hook,調用hook,執行hook的過程。

手冊中已經告知了開啟、定義、調用的方法。那么hook的實現原理是啥呢。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class CI_Hooks {
 var $enabled = FALSE;
 //開啟hook的標志,默認是關閉的。APPPATH/config/config.php中的配置也是默認關閉的,如果想使用hook,要在config.php中開啟。
 var $hooks = array();
 //在_initialize()函數初始化的過程中將APPPATH/config/hook.php中定義的hook數組,引用到$this->hooks;
 var $in_progress  = FALSE;
 //當一個hook執行的時候,會給標記 $in_process = TRUE ,是為了防止同一個hook被同時調用。
 function __construct()
 {
  $this->_initialize();
  log_message('debug', "Hooks Class Initialized");
 }
 function _initialize()
 {
  //初始化hook
  //判斷config.php中是否開啟hook
  //include(hook.php),將文件里定義的hook數組引用到$this->hooks
  //$this->enable = TRUE
 }
 function _call_hook($which = '')//pre_system
 {
  //以pre_system掛鉤點為例,當調用_call_hook('pre_system')時
  //確保$this->enable = TRUE && 定義了$this->hooks['pre_system']
  //如果是二維數組就遍歷,依次_run_hook($this->hooks['pre_system'][$val])
  //如果是一維數組,那么直接_run_hook($this->hooks['pre_system'])
 }
 function _run_hook($data) //$data 是傳遞過來的hook數組
 {
  //$data 就是我們在APPPATH/config/hook.php 定義的hook數組
  //$hook['pre_controller'] = array(
  // 'class'  => 'MyClass',
  // 'function' => 'Myfunction',
  // 'filename' => 'Myclass.php',
  // 'filepath' => 'hooks',
  // 'params'  => array('beer', 'wine', 'snacks')
  // );
  //取出data里面的數據,加載
  APPPATH.$data['filepath'].$data['filename'];
  //實例化鉤子類,調用function。應用到示例中就是
  $this->in_process = TRUE;
  $Hook = new MyClass();
  $Hook->Myfunction($params);
  $this->in_process = FALSE;
  }
}
?>

掛鉤點可以掛多個hook,所以,當我們想擴展ci的時候,只需要將hook文件放到APPPATH文件夾下,然后 到APPPATH/config/hook.php中聲明定義的hook的信息即可。那么系統運行到掛鉤點的時候,會自動調用聲明的hook。

如此一來便實現了可擴展性

希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩国产一区 | 午夜精品一区 | 国产一区 欧美 | 美女福利网站 | 国内精品久久久 | 亚洲情综合五月天 | 国产精品成人在线观看 | 日本激情网| 国产 欧美 日韩一区 | 蜜桃色网 | 97色综合 | 狠狠干美女 | 99免费精品视频 | 欧美成人a | 日本久久久久久 | 一区在线视频 | 二区三区在线 | 亚洲成人激情在线 | 免费一级黄色录像 | 欧美精品国产精品 | 最新免费av网站 | 亚洲视频免费观看 | 精品一区二区三区免费视频 | 欧美一区二区免费 | av入口 | 日本少妇bbbb爽爽bbb美 | 国内精品视频在线观看 | 五月激情天 | 在线观看亚洲专区 | jvid精品资源在线观看 | 国产精品久久久久久久7电影 | 亚洲理论电影 | 久久伊人官网 | 久久精品亚洲精品 | 91精品国产综合久久久久久丝袜 | 国产日韩精品一区 | 欧美影| 欧美国产日韩在线 | 精品一区二区三区在线视频 | 精品伦精品一区二区三区视频 | 国产欧美日韩一区 |