[PHP-users 2449] Re: デザインとロジックの分離 (was:PHPと JSP の比較 )

Junichi Kuroki php-users@php.gr.jp
Wed, 03 Oct 2001 22:56:02 +0900


 黒木です。

> ちょっと疑問に思っているのですが
> 
> > >大体こんな感じです。キーワードはカスタムタグではなくて、@keyword@
> > >って感じの文字列です。デザイナさんには「@hoge@」をhtmlの中に書き込む
> > >と、その場所に hoge なデータが本番時に表示されます。
> > 
> > やっぱりこの形式いいですよね。
> 
> こういう@hoge@とか{HOGE}とかの記述と、<?=$hoge?>という記述ってどう違うの
> でしょう?

 @hoge@ と、 <?=$hoge?> は明らかに違いがあります。前者は あくまで
ラベルですが、後者は PHP のコードの一部であり、変数です。それから、
後者はタグになりますので基本的に不可視であり、デザイナ側からは見え
ない存在です(もちろんツールによりますが)。 前者は後者と違ってプ
ログラムコードとは全く無関係であり、PHPを制御する仕組みを持っていま
せん(もちろん PHP 内部でのライブラリの実装によりますが)。

デザイナとプログラマ間でルールを取り決めし、このタグを入れればこうい
う情報が表示されるという点においては同一なので、プログラマの好みで
好きなスタイルを取れればよいのではないでしょうか? 参考までに私の
書いたコードを一部のっけておきます。

class HTMLClass {

  var $htmlfile ;
  var $htmldata ;

  function HTMLClass( $htmlfile ) {
    $this->htmlfile = $htmlfile ;
    $htmldata = file( $this->htmlfile ) ;
    $this->htmldata = "" ;
    for( $ii=0; $ii<count( $htmldata ); $ii++ ) {
      $this->htmldata .= $htmldata[$ii] ;
    }
    $this->htmldata = i18n_convert( $this->htmldata, "EUC-JP", i18n_discover_encoding( $this->htmldata ) ) ;
  }

  function htmldump( &$data ) {
    $str = $this->htmldata ;
    reset( $data ) ;
    while( list( $key, $val ) = each( $data ) ) {
      $str = ereg_replace( "@" . $key . "@", $val, $str ) ;
    }
    return $str ;    
  }
}

使用方法は、

$thtml = new HTMLClass( "hoge.html" ) ;
$thtml_tag["hoge"] = "ここは置換された領域なのです。" ;
echo $html->htmldump( $thtml_tag ) ;

と、こんな感じでプログラマにとって便利なスタイルになります。
連想配列で置換したいタグを指定して、代入するだけで置換できるので
個人的には楽ちんです。

このライブラリが一番威力を発揮するのが xml 処理でして、xmlドキュ
メントからタグとcdata情報を連想配列に読み込む関数(自作)を利用する
と、ちょっとした xslt プロセッサもどきになって割とお手軽です。
もちろん、階層構造化された複雑なやつはそう簡単にはいかないので
ちょっと難儀してるところですが(^^;

(: )('')( :)(..)(: )('')( :)(..)(: )('')( :)(..)

  黒木淳一 : kuroki@mycc.co.jp
  P.S.R.C.  http://www.chamise.jp/mera/index.html

(..)( :)('')(: )(..)( :)('')(: )(..)( :)('')(: )