サーチ…


フックを有効にする

フック機能は、 application/config/config.phpファイルで次の項目を設定することにより、グローバルに有効/無効にすることができます。

$config['enable_hooks'] = TRUE;

フックの定義

フックは、 application/config/hooks.phpファイルで定義されています。各フックはこのプロトタイプを持つ配列として指定されます

$hook['pre_controller'] = array(
        'class'    => 'MyClass',
        'function' => 'Myfunction',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

配列インデックスは、使用する特定のフックポイントの名前と相関しています。上の例では、フックポイントはpre_controllerです。フックポイントのリストは下にあります。連想フック配列では、以下の項目を定義する必要があります。

class呼び出すクラスの名前。クラスの代わりに手続き関数を使用する場合は、この項目を空白のままにします。

function呼び出す関数(またはメソッド)の名前。

filenameクラス/関数を含むファイル名。

file-pathスクリプトを含むディレクトリの名前。

paramsスクリプトに渡すパラメータ。この項目はオプションです。

フックポイント

pre_system

システムの実行中に非常に早く呼び出されます。この時点では、ベンチマークとフッククラスのみがロードされています。ルーティングや他のプロセスは起こっていません。

pre_controller

いずれかのコントローラが呼び出される直前に呼び出されます。すべての基本クラス、ルーティング、およびセキュリティチェックが完了しました。

post_controller_constructor

コントローラがインスタンス化された直後、メソッド呼び出しの前に呼び出されます。

post_controller

コントローラが完全に実行された直後に呼び出されます。

display_override

_display()メソッドをオーバーライドし、システム実行終了時にWebブラウザに最終ページを送信します。これにより、独自の表示方法を使用することができます。 $this->CI =& get_instance()を使ってCIスーパーオブジェクトを参照する必要があることに注意してください。そして、 $this->CI =& get_instance() $this->CI->output->get_output()呼び出すと、ファイナライズされたデータが利用可能になります。

cache_override

出力ライブラリで_display_cache()メソッドの代わりに独自のメソッドを呼び出すことができます。これにより、独自のキャッシュ表示メカニズムを使用することができます。

post_system

最終的にレンダリングされたページがブラウザに送信された後に呼び出され、ファイナライズされたデータがブラウザに送信された後、システム実行の終了時に呼び出されます。

CodeIgniterを使用したプリコントローラーフックの例

application/hooksフォルダで、名前がBlocker.phpファイルを作成し、以下のコードを貼り付けます。

<?php
class Blocker {

    function Blocker(){
    }
    
    /**
     * This function used to block the every request except allowed ip address
     */
    function requestBlocker(){
        
        if($_SERVER["REMOTE_ADDR"] != "49.248.51.230"){
            echo "not allowed";
            die;
        }
    }
}
?>

application/config/hooks.phpで、次のフックを宣言します。

$hook['pre_controller'] = array(
        'class'    => 'Blocker',
        'function' => 'requestBlocker',
        'filename' => 'Blocker.php',
        'filepath' => 'hooks',
        'params'   => ""
);

application/config/config.php 、次の値をtrueに設定します

フックの定義

フックは、 application/config/hooks.phpファイルで定義されています。各フックはこのプロトタイプを持つ配列として指定されます:

$hook['pre_controller'] = array(
      'class'    => 'MyClass',
      'function' => 'Myfunction',
      'filename' => 'Myclass.php',
      'filepath' => 'hooks',
      'params'   => array('bread', 'wine', 'butter')
);
  • CLASS - 手続き型コードの場合に呼び出すクラスは空白のままです。
  • FUNCTION - 呼び出す関数名。
  • FILENAME - クラス/関数を含むファイル名。
  • FILEPATH - フックファイルの場所。
  • PARAMS - 必要に応じて追加パラメータはオプションです


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow