PHP, HTML uzun dizeleri biçimlendirmek için en iyi yolu nedir?

6 Cevap php

Ben gerçekten öznel bir soru olduğunu biliyorum, ama en iyi uygulamaları (ve okunurluk) için, ben HTML uzun dizeleri biçimlendirmek için en iyi yol üzerinde bir düzeltme almak için görünmüyor olabilir. Ben genellikle bu gibi yapın:

echo '
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
';

Ama hala bu kodun büyük bir blok ortasında görünür, özellikle sonuç sevmiyorum. Bu sadece dağınık hissediyor.

6 Cevap

PHP ve doğrudan giriş HTML üzerinden atlayabilir:

<?php $var = "foo"; ?>
<div>
  <ul>
    <li>Foo</li>
  </ul>
</div>
<?php $foo = "var"; ?>

Yaptığınız her bir yankı / baskı ise, ben bu kadar temiz olduğunu düşünüyorum. Ayrıca, üzerinden çalıştırmak ve HTML kendi içinde tek / çift tırnak kaçmak gerekmez.

Eğer bir değişken olarak HTML saklamak gerekiyorsa, kullanabilirsiniz HEREDOC:

$str = <<<EOD
<div>
  <ul>
    <li>Foo</li>
  </ul>
</div>
EOD;

Neden sadece HTML içinde PHP embed değil? Bu PHP aslında çalışmak için tasarlanmıştır nasıl.

// PHP goes here
?>
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
<?php
// More PHP here

Eski okul Perl-tarzı heredoc da çalışır:

echo <<<EOL
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
EOL;

Birden <?php ?> blokları kullanarak temizleyici, ama bir sınıf tanımı falan iseniz (bir sınıf tanımı HTML baskı garip ama bir şey olsa), bir heredoc daha az garip olabilir.

Ben bu gibi yapardı:

echo '<div>
         <p>Content Inside</p>
         <div class="subbox">
             <ul>
                 <li>etc.</li>
                 <li>etc.</li>
                 <li>etc.</li>
                 <li>etc.</li>
            </ul>
         </div>
      </div>';

Iyi yolu sunum sizin mantığı ayrı bir çiftleşmiş sistemi kullanmaktır. Şablonda yalnızca gibi şeyler olurdu:

<html>
<body>

<h1><?php echo $title; ?></h1>
<p><?php echo $myparagraph; ?></p>

</body>
</html>

Ben mantık sunum ayırmak için Kod Ateşleyici gibi bir MVC mimarisini tercih ederim. Temelde, tüm şablonlar ayrı ayrı saklanır ve here HTML'nizi biçimlendirmek için açıklanan PHP alternatif sözdizimi yapılarını kullanırlar.