8日目: bookmarkの実装をする JSON用ヘルパーの作成

Symfonyのテンプレートにはlink_to()のような組み込みの関数があらかじめいくつか定義されています。これらのテンプレートから利用できる関数をSymfonyでは、ヘルパーと呼んでいます。このヘルパー関数もプロジェクト毎、アプリケーション毎、モジュール毎に簡単に追加することができます。

ヘルパーの作り方

ヘルパーの作り方は簡単です{proj,app,module}/lib/helperを作ってそこに ヘルパー名+”Helper.php”という名前のファイルを置きその中で関数を定義します。

ヘルパーの使い方

使い方も簡単です。テンプレートの中で

< ?php use_helper('ヘルパー名'); ?>

とするだけでヘルパーが利用可能な状態になります。

JSONヘルパーサンプル

サンプルでひとつ簡単なヘルパーを作成してみます。

最近Javascriptをふんだんに利用したアプリケーションが大流行中ですが、PHPの変数をJavascriptに引き渡すときに

var i = '< ?php echo $i ?>';

のようなコードを書くのはいまいちすっきりしません。

そこでJSONというJavascriptのデータ記述形式をPHPの変数からexportするヘルパーを作成してみます。 実装を検討していたらphp-jsonといういいものを見つけました。今回は、php-jsonをインストールしてヘルパー関数を作りました。

作ったのは JasonHelper.phpです。短いので引用します。

< ?php
function export_js($name,$var){
    $code = sprintf("var %s = %s ;",$name,json_encode($var));
    return javascript_tag($code);
}
?>

これだけ。

実際に組み込みは、 Changeset:87で行いました。php-jsonの組み込みが必要なので別ブランチにしてあります。

使い方は

< ?php echo export_js("param",$_param); ?>
< ?php echo export_js("Javascript変数名",PHPの変数); ?>

のように書くだけです。

  • 追記: PHPで書かれたPEAR/JSON ってのもあるみたいなのでそのうちこっちも組み込んでみます。
  • 追記2: PEAR/JSON組み込んでみました。 Changeset:88

Leave a Reply

You must be logged in to post a comment.