テンプレートをPHPの構文で書きたい

guesswork classicではSmartyをデフォルトのテンプレートエンジンとしていますが、バージョン0.0.2以降ではコントローラクラスに以下のような設定を行うことで通常のPHPファイルをテンプレートとして利用することができます。

class FooController extends Controller
{
    // 利用するテンプレートエンジンの設定
    var $_gw_template_engine = 'default';

    // テンプレートとして利用するPHPファイルを置くディレクトリ
    var $_gw_template_templates_dir = '../php_templates';

    // テンプレートファイルの拡張子(この設定は必須ではありません)
    var $_gw_template_ext = 'php';
}
        

上記の設定を行うと、executeDefault()メソッドが実行された場合は ../php_templates/foo/default.php がテンプレートとして処理されるようになります。テンプレートファイル名の命名規則などはSmartyを利用した場合と同じです。

コントローラで定義されたクラス変数のうち、変数名がアンダースコア以外で始まるものは、$m というモデルクラスの変数に格納されてテンプレートに渡されます。例えばコントローラクラスに $name というクラス変数が定義されている場合は、

入力された名前は <?= $m->name ?> です。
        

というようにして参照することができます。また、文字列を出力する際に $this->e() というメソッドに文字列を渡すと特殊文字がHTMLエンティティに変換されて表示されます(PHPのhtmlspecialchars関数を使用しています)。

入力された名前は <?= $this->e($m->name) ?> です。