0

我遇到了几十个脚本,其中 html 被echo删除而不是被存储。我想知道由于灵活的性质,总是将html存储在字符串中是否通常是一种好习惯?

一个随机的例子是我有一个函数可以返回动态子导航的 html。我正在打印开始 div 标签,打印它的内容,然后分别打印结束 div 标签:

<div id="nav">
<?php echo $nav->getHTML();?>
</div>

但是,我现在必须#nav根据列表项的数量和其中的字符总和是否$nav->getHTML()超过一定数量,为 div 分配一个特殊的类,以便分别分配不同的line-heightand height。为此,我必须将其加载到 a 中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 查询?

编辑:ul在我根据字符限制(假设为 200)确定是否将跨越多行(这是一个水平列表)之后,我将为#nav项目添加一个特殊类,然后在 CSS 中进行样式设置。

免责声明:我根本不想依赖 JS。我知道我可以解决它,但我希望它立即正确渲染。

4

3 回答 3

1

我认为,既然在这种情况下,您知道字符串会受到操纵,那么现在存储它是有意义的。如果您正在构建一个不受任何服务器端操作的模板或其他视图,那么您会发现自己正在疯狂地跟踪您的所有作业,其中大部分是您永远不会触及的。

现在,对于您的实际问题,听起来您不需要的是服务器端操作,而是一些核心 CSS。这可能与风格、内容和行为分离的一般最佳实践相一致。

于 2010-08-27T18:21:41.307 回答
1

就个人而言,我不愿意将演示细节(如您提到的计算line-heightheight属性)放在服务器端脚本中。我会尝试用 CSS 或(在最坏的情况下)javascript 来处理它。

在你的情况下,我知道的不多$nav,但是你不能line-height在它的生成过程中计算和其他人,而不是从源头上吗?说,有getHeightgetLineHeight方法除了getHTML

于 2010-08-27T18:23:53.950 回答
1

解析生成的 HTML 以派生业务/呈现逻辑不是一个好主意。我宁愿有另一个名为“getClass”的函数,它根据列表项的数量或$nav->getHTML() 中的字符总和返回类。

<div id="nav" class="<?php echo $nav->getDisplayClass();?>">

<?php echo $nav->getHTML();?>

</div>

于 2010-08-27T18:27:20.003 回答