XCube_ActionFilter (2)

How to define ActionFilter

XCube_ActionFilter2つのメンバ関数は仮想関数です。 したがって、あなたは、XCube_ActionFilter のサブクラスを定義して、目的にあわせてオーバーライドでこれらのメンバ関数をオーバーライドを用いて実装しなければなりません。

しかし、
Legacy_Controller があなたの ActionFilter を積み込んで、それをセットアップしないなら、あなたの ActionFilter のための定義はがらくた同然です。あなたは Preload フィーチャーを、あなたのファイルをロードしてクラスをセットするメカニズムとして利用する必要があります。

Legacy
_Controller は規則的にあなたの XCube_ActionFilter のサブクラスのインスタンスを作成します。 Site PreloadModule Preload はお互いに異なる規則を持っています。まずはじめに、Site Preloadの規則を学んでください。

  1. /preload ディレクトリに {filename}.class.php となるファイルを作成する
  2. {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のこの特性を使用することができます。
|