我遇到过几十个脚本,其中html是echo
'而不是存储。我想知道,由于灵活性,总是将html存储在一个字符串中是不是很好?
一个随机的例子是我有一个函数返回动态子导航的html。我正在打印开始div标签,打印它的内容,然后分别打印结束div标签:
<div id="nav">
<?php echo $nav->getHTML();?>
</div>
但是,我现在必须根据#nav
内的列表项数量和字符总数是否超过一定数量,为$nav->getHTML()
div分配一个特殊类,以便单独分配另一个line-height
和height
。为此,我必须将其加载到DOMDocument
并使用DOMXpath
并进行一些评估。
html = '<div id="nav">';
html.= $nav->getHTML();
dom = new DOMDocument(); // create a DOM tree
xpath = new DOMXpath($d); // create a DOM Xpath tree
// bunch of DOM querying/manipulation
html.= '</div>';
我在想,不应该总是存储这样的东西,以便为将来需要字符串操作的请求提供更灵活的东西吗?还是我不必要地过度压力?或者也许我会以错误的方式解决这个问题,并且需要重构我的类来进行内部而不是外部的DOM查询?
编辑:根据字符数限制(我要说200),我确定ul
是否会跨越多行(这是一个水平列表)后,我会添加一个特殊的从#nav
项开始,然后在CSS中进行样式设计。
免责声明:我根本不想依赖JS。我知道我可以解决它,但我希望它能够立即正确呈现。
答案 0 :(得分:1)
我认为,因为在这种情况下,你知道字符串会受到操纵,所以现在存储它是有道理的。如果您正在构建一个不受任何服务器端操作影响的模板或其他视图,那么您会发现自己疯狂地跟踪所有分配,其中大部分都是您永远不会触及的。
现在,对于你的实际问题,听起来你不需要的是服务器端操作,而是一些硬核CSS。这可能与风格,内容和行为分离的一般最佳实践保持一致。
答案 1 :(得分:1)
就个人而言,我不愿意在服务器端脚本中放置演示文稿详细信息(如计算line-height
或height
属性)。我会尝试用CSS或(在最坏的情况下)javascript来处理它。
在你的情况下,我不太了解$nav
,但是你不能在生成过程中计算line-height
和其他人,而不是从源头算出来的?比方说,除了getHeight
之外,还有getLineHeight
和getHTML
方法。
答案 2 :(得分:1)
解析生成的HTML以导出业务/呈现逻辑并不是一个好主意。 我宁愿使用另一个名为“getClass”的函数,该函数根据$ nav-&gt; getHTML()中的列表项数量或字符总数返回类。
&lt; div id =“nav”class =“&lt;?php echo $ nav-&GT; getDisplayClass();?&gt;“中&GT;
&lt;?php echo $ nav-&gt; getHTML();?&gt;
&LT; / DIV&GT;