XCube_ActionFilter (2)
How to define
ActionFilter
XCube_ActionFilter
の2
つのメンバ関数は仮想関数です。
したがって、あなたは、XCube_ActionFilter
のサブクラスを定義して、目的にあわせてオーバーライドでこれらのメンバ関数をオーバーライドを用いて実装しなければなりません。
しかし、Legacy_Controller
があなたの ActionFilter
を積み込んで、それをセットアップしないなら、あなたの ActionFilter
のための定義はがらくた同然です。あなたは Preload
フィーチャーを、あなたのファイルをロードしてクラスをセットするメカニズムとして利用する必要があります。
Legacy_Controller
は規則的にあなたの XCube_ActionFilter
のサブクラスのインスタンスを作成します。 Site Preload
とModule
Preload
はお互いに異なる規則を持っています。まずはじめに、Site
Preload
の規則を学んでください。
- /preload ディレクトリに {filename}.class.php
となるファイルを作成する
- {filename} クラスを XCube_ActionFilter
のサブクラスとして定義する
preBlockFilter()
でプロセスを止めるサンプルフィルタを作成してみましょう。
初めに、/preload
で 'KillBill.class.php'
を作成してください。
次に、'KillBill'
クラスを以下のように定義してください。
class
KillBill
extends
XCube_ActionFilter
{
function preBlockFilter()
{
die("Kill
Bill!");
}
}
それにより、あなたは、あなたを'KillBill'
メッセージによって、あなたの稼働中のXOOPS
Cube
にアクセスできなくなります。このルールがどれほど重要であるかを知るために、クラス名を変えてみましょう。
class
KissBall
extends
XCube_ActionFilter
それから、あなたはあなたの稼働中のXOOPS Cube
にアクセスすることができるようになります。
何もあなたを妨げません。Legacy_Controller
はこのファイルをロードして、このクラスを定義しますが、彼は、それが違反するので、それをチェーンに積みません。あなたは、あなたのクラスライブラリをロードするのにPreload
のこの特性を使用することができます。