複数のコントローラで設定値を共有したい

複数のコントローラで構成される大きなアプリケーションを作成する場合は、デフォルトアクションやテンプレートディレクトリパスといった設定値を一箇所にまとめて記述しておきたいことがあります。そのような場合はクラス変数に値を設定するだけのベースクラスを定義しておき、すべてのコントローラがそのクラスを継承するようにします。

ベースクラス:

class BaseController extends Controller
{
    var $_gw_default_action = "input";
    var $_gw_template_class = "/path/to/Smarty.class.php";
    var $_gw_template_templates_dir = "/path/to/templates";
    var $_gw_template_compile_dir = "/path/to/templates_c";
}
        

ベースクラスを継承したコントローラ:

class FooController extends BaseController
{
    // 設定値を継承しているのでデフォルトでこのメソッドが呼ばれる
    function executeInput()
    {
    }
}
        

また、サブクラスで任意のクラス変数の値だけを再設定することも可能です。

ベースクラスを継承し設定値を変更したコントローラ:

class BarController extends BaseController
{
    // 設定値の上書き
    var $_gw_default_action = 'confirm';

    // 設定値を変更しているのでデフォルトでこのメソッドが呼ばれる
    function executeConfirm()
    {
    }
}