symfonyで携帯向け開発その1

Tsukimiyaです。やっとログイン出来たので久々に更新です。

ここしばらく、symfonyで携帯向けコンテンツを作っていました。 tipsらしいものもいくつかあるのでいくつか紹介したいと思います。 今回はauで問題になるキャッシュコントロールのお話。

au向けのコンテンツを作っていると大抵の場合キャッシュコントロールが問題になります。 大抵、header()関数でPragma: no-cacheを吐くとかしてキャッシュコントロールを無効にすると思うのですが多くの場所にそれを書くのは面倒くさい。 そこでsymfony的にfilterを使って解決します。 PROJECT_DIR/lib/ あたりにmobileFilter.class.phpというファイルを作ります。

<?php
class mobileFilter extends sfFilter
{
    public function execute ($filterChain)
   {
        if ($this->isFirstCall()) {
            $context  = $this->getContext();
            $response = $context->getResponse();
 
            $response->setHttpHeader('Expires', "Thu, 01 Dec 1994 16:00:00 GMT");
            $response->setHttpHeader('Last-Modified', gmdate("D, d M Y H:i:s")." GMT");
            $response->setHttpHeader('Cache-Control', 'no-cache,must-revalidate');
            $response->setHttpHeader('Cache-Control', 'post-check=0,pre-check=0', false);
            $response->setHttpHeader('Pragma', 'no-cache');
        }
 
        // execute next filter
        $filterChain->execute();
 
    }
}

あとはfilters.ymlでこのフィルターを登録してsymfony ccすればOK。 mojavi3の時のfilterは、filterの初回起動判定に自分でstaticな変数を作って頑張っていたのがsymfonyではisFirstCall()メソッドが準備されていてスマートに記述することが出来、mojavi3から細かい部分でも進化していることが感じられます。

次回は携帯でのセッションについて書く予定です。

symfonyコマンドをプロジェクトディレクトリの下層から実行する

待望のSymfony 1.0 beta 1が発表されました。アナウンスには面白そうな新機能がたくさんありますが、symfonyコマンドラインインターフェイス機能の追加もその一つです。

1.0.0の安定板リリースが待ち遠しいのですが、最近はネタ切れで本ブログ更新をサボってお叱りをうけてしまいましたので、これからさらに利用頻度があがるであろうsymfonyコマンドに関する小ネタで繋ぎたいと思います。

この投稿の続きを読む »symfonyコマンドをプロジェクトディレクトリの下層から実行する

1.0リリース間近か?

本家のwikiにWhat needs to be done before symfony 1.0 stable releaseというページができました。いよいよ1.0のリリースも迫ってきたかというところでしょうか。なぜ”Polish I18″がタスクとしてあげられているのかは不明ですが、結構利用者がいるということでしょうか?