我仍然无法真正围绕内置的DOMDocument类。
为什么我应该使用它而不是像下面这样做?
我想知道这些好处。
$URI = $_SERVER['REQUEST_URI'];
$navArr = Config::get('navigation');
$navigation = '<ul id="nav">' . "\n";
foreach($navArr as $name => $path) {
$navigation .= ' <li' . ((in_array($URI, $path)) ? ' class="active"' : false) . '><a href="' . $path[1] . '">' . $name . '</a></li>' . "\n";
}
$navigation .= '</ul>' . "\n\n";
return $navigation;
答案 0 :(得分:2)
这是使用DOMDocument的相同示例:
$doc = new DOMDocument;
$list = $doc->appendChild($doc->createElement('ul'));
$list->setAttribute('id', 'nav');
foreach ($navArr as $name => $path) {
$listItem = $list->appendChild($doc->createElement('li'));
if (in_array($URI, $path)) {
$listItem->setAttribute('class', 'active');
}
$link = $listItem->appendChild($doc->createElement('a'));
$link->setAttribute('href', $path[1]);
$link->appendChild($doc->createTextNode($name));
}
return $doc->saveHTML();
它更冗长,但不是太多,并且可能更清楚每一步发生的事情。
一个好处是角色转义:createTextNode
和setAttribute
确保正确转义特殊HTML字符(引号,符号和尖括号)。
最后,对于更大的应用程序,您可能希望使用实际模板语言(如Twig)来生成HTML,因为模板更具可读性和可扩展性。