Top / PEAR / HTML_Template_Flexy / とりあえずつかってみよう / Smartyだったら?


 #setlinebreak(on)
 * HTML_Template_Flexy [#z0b59d7e]
 * PEAR::HTML_Template_Flexy Smartyだったら? [#z0b59d7e]
 [[PEAR/HTML_Template_Flexy/とりあえずつかってみよう]]
 #htmlinsert(googleAdsense.html)
 ** Smartyだったら? [#l68564db]
 #ref(http://dozo.rgr.jp/img/img20_file.png,right,nolink,around,PHP::PEAR)
 
 比較対照に[[Smarty:http://smarty.php.net/]]を用意。
 [[とりあえずつかってみよう>PEAR/HTML_Template_Flexy/とりあえずつかってみよう]]のサンプルコードを[[Smarty:http://smarty.php.net/]]で作成してみました。
 
 私自身Smartyを使い込んでいないので、
 もっとうまく書けるかも知れませんが。
 まぁ、当たらずも遠からずってとこでしょう。
 それにたったこれだけのコードですでに崩壊が始まっています。
 実際のコード、テンプレートはもっと複雑で、
 実運用レベルではもう目も当てられない状態でしょう。
 
 
 #ref(SmartyTemplate.png,right,nolink,around,Smarty Template)
     Smarty.html
  
     <html>
     <head>
      <title>{$title}</title>
     </head>
     <body>
     <H1>{$title}</H1>
     <form name="form">
  
     <table>
      <tr>
        <td>Input Box: 
         <input name="input" value="{$textbox}"
         {$attribute} /></td>
      </tr>
      <tr>
        <td>SelectBox: <select name="select">
     {html_options options=$numbers selected=2}
        </select></td>
      </tr>
      <tr>
        <td><select name="true">
     {html_options options=$true selected=2}
            </select>
        </td>
      </tr>
     {foreach from=$Objects key=number item=object}
      <tr>
        <td><a href="mypage.html?id={$number}">{$object->dispDate()}</a></td>
      </tr>
     {/foreach}
     </table>
     </form>
     </body>
     </html>
 
 foreachのあたりで崩壊してますね。
 
 ソースコードはこんな感じ。
     smarty.php
     <?
     require_once("Smarty/Smarty.class.php");
     
     class controller_test 
     {
         var $template = "smarty.html";
     
         function controller_test() 
         {
             $this->initial();
             $this->start();
             $this->output();
         }
     
         function initial()
         {
             $this->htmlObj = & new Smarty();
             $this->htmlObj->template_dir = "./";
             $this->htmlObj->compile_dir = "/tmp";
         }
     
         function start() 
         {
             for ($i = 1;$i< 5;$i++){
                 $extObj = new extendsClass();
                 $extObj->number = $i;
                 $Objects[] = $extObj;
                 $numbers[] = "list $i";
             }
             $this->htmlObj->assign("title", "Hello World");   // 文字列出力
         // inputタグのvalueに'Hello'を代入
             $this->htmlObj->assign("textbox", "Hello");
         // inputタグにsize,style属性を付加
             $this->htmlObj->assign("attribute", "size=\"10\"
              style=\"background-color:#FFCCFF;\"");
         // ドロップダウンリストの作成
             $this->htmlObj->assign_by_ref("numbers", $numbers);  
             $true_or_false = array(1 => "False", 2 => "True");
             $this->htmlObj->assign_by_ref("true", $true_or_false );  
         // オブジェクトの配列をassign
             $this->htmlObj->assign_by_ref("Objects", $Objects);
         }
     
         function output() {
             $this->htmlObj->display($this->template);
         }
     }
     
     class extendsClass
     {
        function dispDate()
        {
        // number週間後の日付を出力
            return date("Y-m-d", 
                strtotime( (int)$this->number. " weeks " ) ); 
        }
     }
     
     new controller_test;
     ?>
 assignだらけ。
 そんなにassignしなくても人は足りてますよー(笑
 
 #comment


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較