Я ищу PHP-решение, которое позволит создавать HTML в следующем стиле:
$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 сопоставим, это то, что я хотел бы знать.
В настоящее время у меня нет версии 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"; } ?>
php http://php.net/manual/en/class.domdocument.php будет хорошо для этого. это php-интегрированные классы
Для этого вы можете использовать объект DOM или написать собственный класс, что проще i thnik. Но вы пытаетесь использовать функциональность обычной системы шаблонов, таких как Smarty , Twig или другие.
если вы хотите скопировать код HTML, вы можете использовать HAML