[PHP-users 13375] Re: PHPとJavaScript との連携

Mashiki php-users@php.gr.jp
Tue, 18 Feb 2003 09:37:06 +0900


 Mashikiです。

>ところで、ヒアドキュメントですが、
>便利な反面、段下げできないので個人的には使ってませんが、
>コードのレイアウトを乱さずに、かといってファイルを分けたり、
>テンプレートを使うまでもないような場合に、
>お勧めの方法ってありませんか?

自分は見やすいようにラベルに

「____EOF____」
や
「___o___o___o___o___」

など目立つ文字を使ったりしてたのですが、あまり見やすくなりませんね。

やはりタブでしょう。phpの文法で

   $html = <<< HERE, 2
         <tr><td>$no</td>
             <td>$name</td>
         </tr>
HERE;

と書くと、各行の行頭2つのタブが削除できるとうれしいんですけど、
できないので、共通のインクルードファイルに

----------------------------------------------
/**
 * タブ削除
 *
 * 各行より指定された数のtabを取り除く
 * @param integer
 * @param string
 * @return string
 */
function UTab($nTab, $sBuf) {
   return ereg_replace("(^|\n)\t{{$nTab}}", '\\1', $sBuf);
}
----------------------------------------------
なる関数を定義しておいて、実際ののソースに
以下のようにインデントして書いています。

-------------------------------------------------
   :
   :
   $sNotice = $NoticeList->Display('NOTICE');

   echo UTab(2, <<< _
      <HTML><HEAD>$header</HEAD><BODY>
      $menu
      <CENTER>
      <B><font size=+3>$welcome</font></B>
      <BR><BR><BR>
      $sLoginInfo
      <table width='95%'><tr><td>
         $list
         <TABLE border=1 width=100% cellspacing=0 cellpadding=1>
            <TR><TD>
               <TABLE border=0 width=100% cellspacing=3 cellpadding=0>
                  <TR><TH nowrap><b>■ お知らせ ■</b></FONT>
                  <TR><TD>$sNotice
               </TABLE>
         </TABLE>
      </table>
      </CENTER>
      </body></html>
_
   );
   :
   :
----------------------------------------------------

実行時に僅かのCPUを食われてしまうことを気にしなければ見やすいですよ。


# このメールではタブをスペース3つに置き換えて書いています