ホームページ ウェブフロントエンド jsチュートリアル CI框架源码解读之利用Hook.php文件完成功能扩展的方法_php实例

CI框架源码解读之利用Hook.php文件完成功能扩展的方法_php实例

Jun 07, 2016 pm 05:07 PM
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的实现原理是啥呢。

<&#63;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;
  }
}
&#63;>

ログイン後にコピー

挂钩点可以挂多个hook,所以,当我们想扩展ci的时候,只需要将hook文件放到APPPATH文件夹下,然后 到APPPATH/config/hook.php中声明定义的hook的信息即可。那么系统运行到挂钩点的时候,会自动调用声明的hook。

如此一来便实现了可扩展性

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでCIフレームワークを使用するにはどうすればよいですか? PHPでCIフレームワークを使用するにはどうすればよいですか? Jun 01, 2023 am 08:48 AM

ネットワーク技術の発展に伴い、PHP は Web 開発の重要なツールの 1 つになりました。人気のある PHP フレームワークの 1 つである CodeIgniter (以下、CI) も、ますます注目され、使用されるようになりました。今回はCIフレームワークの使い方を見ていきます。 1. CI フレームワークをインストールする まず、CI フレームワークをダウンロードしてインストールする必要があります。 CI フレームワーク圧縮パッケージの最新バージョンを CI の公式 Web サイト (https://codeigniter.com/) からダウンロードします。ダウンロードが完了したら解凍します

VUE3 基本チュートリアル: Vue プラグインを使用して機能を拡張する VUE3 基本チュートリアル: Vue プラグインを使用して機能を拡張する Jun 15, 2023 pm 09:45 PM

Vue は人気のある JavaScript フレームワークであり、Vue プラグインは Vue の機能を拡張し、開発効率を向上させる方法です。この記事では、Vue プラグインを使用して Vue の基本機能を拡張する方法を学びます。 Vue プラグインは、install メソッドを備えた JavaScript オブジェクトで構成されます。オブジェクトは関数またはオブジェクトであり、拡張される Vue 機能は install メソッドで定義されます。これらのインストール方法では、コンポーネント、ミキサー、ディレクティブを追加できます

exeからphpへ:機能拡張を実現する効果的な戦略 exeからphpへ:機能拡張を実現する効果的な戦略 Mar 04, 2024 pm 09:36 PM

EXE から PHP へ: 機能拡張を実現する効果的な戦略 インターネットの発展に伴い、より幅広いユーザー アクセスとより便利な操作を実現するために、ますます多くのアプリケーションが Web に移行し始めています。その過程で、本来EXE(実行可能ファイル)として動作する機能をPHPスクリプトに変換する需要も徐々に高まっています。この記事では、EXE を PHP に変換して機能拡張を実現する方法と、具体的なコード例を説明します。 EXE を PHP に変換する理由 クロスプラットフォーム対応: PHP はクロスプラットフォーム言語です

PHPでCIフレームワークを使用する方法 PHPでCIフレームワークを使用する方法 Jun 27, 2023 pm 04:51 PM

PHP は、Web 開発で広く使用されている人気のあるプログラミング言語です。 CI (CodeIgniter) フレームワークは、PHP で最も人気のあるフレームワークの 1 つであり、既製のツールと関数ライブラリの完全なセットに加え、いくつかの一般的なデザイン パターンを提供し、開発者が Web アプリケーションをより効率的に開発できるようにします。この記事では、CI フレームワークを使用して PHP アプリケーションを開発する基本的な手順と方法を紹介します。 CI フレームワークの基本概念と構造を理解する CI フレームワークを使用する前に、いくつかの基本概念と構造を理解する必要があります。下

PHPでCI4フレームワークを使用するにはどうすればよいですか? PHPでCI4フレームワークを使用するにはどうすればよいですか? Jun 01, 2023 pm 02:40 PM

PHP は広く使用されているサーバー側スクリプト言語であり、CodeIgniter4 (CI4) は、Web アプリケーションを構築するための高速かつ優れた方法を提供する人気のある PHP フレームワークです。この記事では、CI4 フレームワークの使用方法を説明することで、優れた Web アプリケーションを開発するための CI4 フレームワークの使用を開始できるようにします。 1. CI4 をダウンロードしてインストールします。 まず、公式 Web サイト (https://codeigniter.com/downloa) から CI4 をダウンロードする必要があります。

PHP の CI フレームワークのガイド PHP の CI フレームワークのガイド May 22, 2023 pm 07:10 PM

インターネットの発展と人々の生活への継続的な統合に伴い、ネットワーク アプリケーションの開発はますます重要になっています。有名なプログラミング言語として、PHP はインターネット アプリケーションの開発に推奨される言語の 1 つになりました。開発者は、開発プロセスを簡素化するために多数の PHP フレームワークを使用できます。最も人気のあるフレームワークの 1 つは CodeIgniter (CI) フレームワークです。 CI は強力な PHP Web アプリケーション フレームワークであり、軽量で使いやすく、パフォーマンスが最適化されているなどの特徴があり、開発者は迅速に構築できます。

CSSをCIフレームワークに導入する方法 CSSをCIフレームワークに導入する方法 Dec 26, 2023 pm 05:20 PM

CI フレームワークに CSS スタイルを導入する手順は次のとおりです: 1. CSS ファイルを準備します; 2. CSS ファイルを CI フレームワーク プロジェクトの適切な場所に保存します; 3. CSS スタイルを使用する必要があるページに CSS を導入しますHTML <link> タグ File; 4. HTML 要素内の CSS クラスまたは ID 名を使用して、対応するスタイルを適用します。

CI フレームワークで CSS スタイルを参照する手順の詳細な説明 CI フレームワークで CSS スタイルを参照する手順の詳細な説明 Jan 16, 2024 am 09:28 AM

チュートリアル: CI フレームワークに CSS スタイルを導入するための詳細な手順。特定のコード例が必要です。 はじめに: スタイルは Web アプリケーション開発の重要な部分です。 CSS (Cascading Style Sheets) を使用して Web ページを美しくし、より良いユーザー エクスペリエンスを提供します。 CodeIgniter (CI) フレームワークを使用して開発する場合、CSS スタイルを正しく導入する方法が特に重要です。この記事では、CI フレームワークに CSS スタイルを導入する詳細な手順を紹介し、具体的なコード例を示します。ステップ 1: CSS ファイルを作成します。

See all articles