0

私は、HTML がecho格納される代わりに出力されるスクリプトを何十個も見つけました。柔軟な性質のために、常にhtmlを文字列に保存するのが一般的に良い習慣なのだろうか?

ランダムな例は、動的サブナビゲーションの html を返す関数があることです。開始 div タグを印刷し、その内容を印刷してから、終了 div タグを個別に印刷しています。

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

ただし、別の と を個別に割り当てるために、リスト項目の量と 内の文字の合計が一定量を超える#navかどうかに基づいて、特別なクラスを div に割り当てる必要があります。このために、私はそれをにロードして使用し、いくつかの評価を行う必要があります。$nav->getHTML()line-heightheightDOMDocumentDOMXpath

      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持っていると言います。getHeightgetLineHeightgetHTML

于 2010-08-27T18:23:53.950 に答える
1

生成された HTML を解析してビジネス/レンダリング ロジックを導出することはお勧めできません。$nav->getHTML()内のリスト項目の量または文字の合計に基づいてクラスを返す「getClass」と呼ばれる別の関数が必要です。

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

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

</div>

于 2010-08-27T18:27:20.003 に答える