Bshe/manual/Bshe_View/doc/Programmer/Original/Helper [Bshe利用マニュアル] - Wiki

Page Top

プログラマー向けマニュアル:独自のクラスで拡張 anchor.png

Page Top
独自のヘルパークラスの作成 anchor.png
Page Top
概要 anchor.png

Bshe_Viewでは、独自のヘルパークラスを定義することができます。
ヘルパークラスは、Bshe_ViewでWebデザイン側でロジックを選択できる唯一の機能となります。
また、その実装は、処理されるべき値に対してのみ実行可能なもののため、非常に簡単に実装が可能です。

Page Top
ヘルパークラス判別の仕組み anchor.png

Bshe_Viewでは、HTML上のキー属性から、実際にそのタグに対して処理を実施するヘルパークラスを判別し処理を実行します。
キー属性のルールから「ヘルパー名」が抽出されますが、
これは実際のクラス名ではなく、その一部になります。

まず、ヘルパークラス判別については、以下の4つの項目が設定可能です

  • helperClassPath: 独自ヘルパークラスのパス(配列により複数設定可能)
  • helperClassPrefix: 独自ヘルパークラスの頭文字
  • builtinHelperClassPrefix: ビルトインヘルパークラスの頭文字(通常は指定不要)

取り出されたクラス名は以下の順序で判別され、処理する実際のクラスを決定します。

  1. 独自定義のヘルパークラスを検索
    1. 独自設定したhelperClassPathから、ヘルパー名.php(ヘルパー名は自動で頭を大文字、その他を小文字に変換しております)というファイルがあるかを確認
    2. ファイルがある場合は、そのファイルをrequire_onceし、処理対象クラスが読み込まれたかをチェックします。
  2. ビルトインクラスの検索
    1. 独自定義のクラスが見つからなかった場合、あらかじめ決められたビルトインのヘルパークラスを検索します。
    2. この際、もし設定していれば[builtinHelperClassPrefix]_処理クラス名というクラスを、設定されていない場合は、デフォルトのクラスを検索します。

具体的に例を示します。

  • 以下のように設定が行われている場合
    • helperClassPath: '/resource'
    • helperClassPrefix: 'MyClass_'
  • キー属性が「bshe:myhelper:myclass:mymethod」だった場合

この場合、クラスは次のように決められます。

  1. 独自定義のヘルパークラスを検索
    1. '/resource'から、「Myhelper.php」というファイルがあるかを確認
    2. ファイルがある場合は、そのファイルをrequire_onceし、「MyClass_Myhelper」クラスが読み込まれたかをチェックします。
    3. 正しく読み込まれれば、このキー属性に対しては、「MyClass_Myhelper」クラスのsetViewメソッド(このメソッド名は決まりです)が呼ばれます。
       
Page Top
実装の仕方 anchor.png
  • ヘルパークラスを作成する場合は、Bshe_View_Helper_Html_Abstractを必ず継承しなくてはなりません。
  • ヘルパークラスの実際のヘルパーメソッドは「setView」という名称のスタティックメソッドでなくてはなりません。
  • setViewメソッドは1つの配列を引数に取り、出力対象となる文字列を返値にしなくてはなりません。
  • ヘルパーの引数配列は以下の構造となっています。
    array(
      'value' => 処理対象となる値,
      'helperParams' => [[キー属性>Bshe/manual/Bshe_View/doc/Designer/key]]から抽出されたヘルパーの引数配列,
      'templateClass' => テンプレートクラス,
      'params' => 独自リソースクラスのメソッドの引数と同じparams配列
    )
  • ここでparamsの中の配列は独自リソースクラスの作成で記載したものと同じものが渡されます。
  • テンプレートクラスのインスタンスを取得しますが、ここではあくまで参照用として利用してください。(仕組み上この配列へ修正を加えても反映されないことがあります)

Front page   Diff Backup Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 562, today: 1, yesterday: 0
Last-modified: 2009-01-21 (Wed) 00:29:03 (JST) (1215d) by abe