DOMモジュールを使ってみる
ベタ書きだろうがEthnaだろうがHTMLの世界から離れられないのはWebアプリの宿命。
echo "<span id=\"foo_mesg\" class=\"{$classes}\">{$message}</span>";
とかやってられないコードを多数書く羽目になるので、JavaScript風のcreateElementで作成できたらいいのに、と思って関数を書いてみた。
$html= getDomHtml('span',array( 'class' => $classes, 'id' => 'foo_mesg', ), $message );
これでおっけー!
/** * getDomHtml * * DOM XMLモジュールを利用してタグHTMLを返す * * @param string $tagName 作成するタグ * @param array $attribute タグの属性のハッシュ配列 * @param array $nodes タグに含むノード * string $nodes 文字列だった場合はテキストノードとする */ function getDomHtml($tagName, $attribute=array(), $nodes=null){ if (!function_exists('domxml_new_doc')){ die('getDomHtml() Error : phpcoreにDOMモジュールが必要です。'); } $doc=domxml_new_doc('1.0'); $elem=$doc->create_element($tagName); /* 内包ノードの処理 */ if(is_array($nodes)){ foreach($nodes as $node ){ $elem->append_child($node); } } else { $innerNode = $doc->create_text_node($nodes); $elem->append_child($innerNode); } /* attributeの設定 */ foreach($attribute as $attr=>$value){ $elem->set_attribute($attr,$value); } $doc->append_child($elem); return $doc->dump_node($elem); }
PHPのDOM周りはバージョンで挙動違うっぽいとか、そもそもモジュールが入ってるかどうか、とか問題がありますが
動くところでは便利な感じ。