XCube_ActionFilter (3)

Practice

恐らく、あなたは、 Preload を使いこなすために XOOPS Cube Legacy のその他のメカニズムを理解する必要があるでしょう。プリロードは、ほとんどのカスタマイズの起点となります。

しかし、今は
Preload を理解することが、重要です。そこで、 Preload のみを使用して実例を作成しましょう。それは、 ForceSiteClose というものです。 ForceSiteClose は、特定の IP を除いて全ユーザーのために全ユーザーに対してサイトクローズを行います。それは、テストに便利です、なぜならテスターは特定のIPから来ていれば、ゲストユーザーとしてサイトにアクセスが出来るからです。ForceSiteClose によって、サイトオーナーは、テストしながら訪問者に対してサイトを閉じることができるのです。

class ForceSiteClose extends XCube_ActionFilter
{
  var
$mSpecificIPs = array('127.0.0.1');

  function
preFilter()
  {
     
$ip = $_SERVER['REMOTE_IP'];
     if (!
in_array($ip, $this->mSpecificmIPs)) {
         
$this->doSiteClose();
         exit();
     }
  }

  function
doSiteClose()
  {
     
//
     // You must rewrite the following for your expression.
     //
     
print "This site is closed now, Because ...";
  }
}


あなたは、データベース障害に際してこのフィルタを使ってもよいでしょう。なぜなら、 ForceSiteClose は、データベースなしで動くからです。一方、 XOOPS Cube Legacy のサイトクローズは、データベース障害の下では動きません。

Future XCube_ActionFilter

これは、 ActionFilter に詳しい開発者のための備考です。

Legacy_Controller において、 ActionFilter 機能は、サイトプリロード、及び、モジュールプリロード専用です。つまり、それは、サイト所有者とモジュール開発者がカスタマイズを行うために存在します。Legacy_Controller は、自身を構築するために ActionFilter 機能を使いません。従って、いくつかのフレームワークの ActionFilter と Legacy_Controller における ActionFilter は異なっています。

onokazu 氏は Legacy_Controller がそれ自身を構築するために ActionFilter を使うことは、スマートなプログラムであると言いました。彼のアイデアは、まったく正しく、かつ魅力的です。 ActionFilter はシンプルなメカニズムにすぎませんから、 XCube_ActionFilter のクラス設計は、その用途に十分です。

最終的に、私達は、実例による役割分担の明確化のために Legacy_Controller のこの設計を保持することにしました。ベースモジュールでコントローラを作るためにあなたがそれを使うことは、自由です。そして、近い将来リリースされるであろういくらかのベースモジュールは、そのような目的のために ActionFilter を使うかもしれません。

我々が少なくともそのような使用を検討したことを留意してください。
|