codeigniter
フックの使用
サーチ…
フックを有効にする
フック機能は、
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
- 必要に応じて追加パラメータはオプションです