[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
(..)( :)('')(: )(..)( :)('')(: )(..)( :)('')(: )