LoginSignup
2
1

More than 3 years have passed since last update.

FuelPHPとプレゼンタとSmarty

Last updated at Posted at 2018-11-30

プレゼンタを使うと、必要な処理をviewごとにコンパクトにまとめることができる。共用の処理と分離することができるので、デバッグもしやすくなる。

Smartyで書かれたviewをプレゼンタと紐付ける

パーサとしてSmartyを採用しているケースで、ちょっと納得がいかない部分があった。

View_Smarty::forge('default/index');

たとえば上記のようなコードをプレゼンタに置き換えるなら、

Presenter::forge('default/index');

普通はこう書き変えるだけ。プレゼンタはdefault/index.php、viewもdefault/index.phpとなる。

でもSmartyを使う場合は、

Presenter::forge('default/index.php','view',null,'default/index.smarty');

こう書く。Smartyなどのパーサを使う場合はプレゼンタとviewファイルの拡張子が違うため、引数ひとつですませることができない。

引数ひとつですませる方法

Viewを継承した形で使えるView_Smartyがあるように、Presenterを継承したPresenter_Smartyを作ると拡張子の違いを吸収できる。

class Presenter_Smarty extends Presenter {
    public static function forge($presenter, $method = 'view', $auto_filter = null, $view = null)
    {
        return parent::forge(
                $presenter,
                $method,
                $auto_filter,
                \View_Smarty::forge($view.'.smarty'));
    }
}

coreのPresenterを参考にして上記のようにPresenter_Smartyを作り、

\Autoloader::add_classes(array(
    'Presenter_Smarty' => APPPATH.'xxx/presenter/smarty.php',
));

bootstrap.phpのadd_classesでフックする。これで完了。

Presenter_Smarty::forge('default/index');

こう書ける。

そもそも

公式のparserバッケージがプレゼンタに対応していないことがそもそもの問題なので、いずれプルリクを書いたりとかしたい。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1