我正在寻找一种允许以下列风格创建HTML的PHP解决方案:
$head=new Head();
$title=new Title("The title of the page");
$head->setTitle($title);
$body=new Body();
$h1=new H(1,"Header 1");
$body->add($h1);
$html=new HTML();
$html->setHead($head);
$html->setBody($body);
echo $html->asHTMLString();
哪些PHP库具有类似的API? 我对“什么是最好的......?”不感兴趣。我想知道API的可比性这一事实。
答案 0 :(得分:1)
此时我确实没有OO版本,如下所示:
<?php
/**
* HTML Abstraction
*/
// html
function html($html) {
return tag("html",$html,-1,0);
}
// body
function body($body,$indent=1) {
return tag("body",$body,$indent,$indent);
}
// head
function head($head,$indent=1) {
return tag("head",$head,$indent,$indent);
}
// image
function img($src,$alt,$width,$height,$indent=-1) {
return attrtag("img",attr("src",$src).attr("alt",$alt).attr("width",$width).attr("height",$height),"",$indent,$indent);
}
// table
function table($lt,$indent=3) {
return tag("table",$lt,$indent,$indent);
}
// title
function title($title,$indent=2) {
return tag("title",$title,$indent,-1);
}
// tag with possible indentation
function tag($tag,$ltagcontent,$openindent=-1,$closeindent=-1) {
return attrtag($tag,"",$ltagcontent,$openindent,$closeindent);
}
function td($ltd,$indent=5) {
return tag("td",$ltd,$indent,$indent);
}
function th($lth,$indent=5) {
return tag("th",$lth,$indent,$indent);
}
function tr($ltr,$indent=4) {
return tag("tr",$ltr,$indent,$indent);
}
function a($href,$la,$indent=-1) {
return attrtag("a",attr("href",$href),$la,$indent,$indent);
}
function h($h,$lh,$indent=-1) {
if ($indent<0)
$indent=$h+1;
return tag("h".$h,$lh,$indent,-1);
}
// an attribute with a given value
// or empty if value is not set
function attr($attr,$value) {
if (empty($value))
return "";
else
return " ".$attr."='".$value."'";
}
// attributed tag, possibly indented
function attrtag($tag,$attr,$ltagcontent,$openindent=-1,$closeindent=-1) {
$html="<".$tag.$attr;
if ($openindent>=0)
$html="\n".indentation($openindent).$html;
if (empty($ltagcontent)) {
$html.="/>";
if ($closeindent>=0)
$html.="\n".indentation($closeindent);
} else {
$html.=">".$ltagcontent;
if ($closeindent>=0) {
$html.="\n".indentation($closeindent);
}
$html.="</".$tag.">";
}
return $html;
}
// indent the given lines
function indent($html,$indent) {
$result="";
$lines=explode("\n",$html);
foreach($lines as $line) {
$result.=indentation($indent).$line."\n";
}
return $result;
}
// indentation by the given count
function indentation($count) {
return str_repeat(" ",$count);
}
// adds a newline
function line($line) {
return $line."\n";
}
?>
答案 1 :(得分:0)
php http://php.net/manual/en/class.domdocument.php对此有好处。它是php集成类
答案 2 :(得分:0)
为此你可以使用DOM object或者写我们自己的课程,这对我来说更容易。 但您尝试的是普通模板系统的功能,例如Smarty,Twig或其他。
如果您想缩短HTML代码,可以使用HAML