Php ve html Karıştırma

4 Cevap

Ben cevaplar çerçeveler veya diğer kütüphanelerden dönük kaçınmaları sorabilirsiniz, ben bunu takdir ediyorum. Ben bu farkındayım, ve hızlı küçük kesmek için deneyime dayalı bir cevap daha sonra duyuyorum.

Bazı temel html ile başlayın

 <html>
      <head>
           <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
           <title>Page Title</title>
      </head>
      <body>
         // something is going to happen here, could be more html, or php
      </body>
 </html>

Diyelim ki yüzlerce sayfa olacak diyelim, tabii ki, daha az kod tekrarını sahip bir şekilde bu modularize istiyorum.

Ben, gördüğüm kullanılan ve birçok taktik tartışıyor.

Temel yöntem şunları içerir:

header.inc.php

 <html>
      <head>
           <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
           <title>Page Title</title>
      </head>
      <body>

footer.inc.php

      </body>
 </html>

Php sayfaları sizin yüzlerce tüm saplama:

<?php include 'header.inc.php'; ?>
    // html or other php can go here
<?php include 'footer.inc.php'; ?>

Biraz daha süslü olsun, ve bir var.inc.php var ve $ PAGE_TITLE ayarlayabilirsiniz ve ilk önünde yüzlerce sayfa dışarı düzenleme zamandan tasarruf içerdiğini var.

Fonksiyonları yöntemi:

show.inc.php

function display_header($page_title) {
     echo "
     <html>
          <head>
               <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
               <title>$page_title</title>
          </head>
          <body>";

}

Sen altbilgi için aynı şeyi, ben size fikir olsun şüpheli. Ben size bir sürü ben de bu tartışmaya önlemek istiyorum ki, bu noktada nesneleri düşündüğünü biliyorum.

Eğer modern çağın bazı forma taşımak için bir tasarımcı almak için çalışıyoruz ki çok genç bir çocuğa bazı prensipleri öğretmeye çalışıyoruz, ya da düşünün.

Ya da hangi yöntemi, size bir tarayıcıda html ve php çıkışına bakmak için gidiyoruz durumlarda içine çalışmaya başlar. Tarayıcıyı vurur kaynak çıkışına çok net bir sekme girinti ve yapısı vardır. Ve çoğu zaman, bir sitenin kaynağına bakarak, ben oldukça berbat html bkz. Tüm bir satır veya indenting değişen formları.

Bunu nasıl basit bir şekilde çözmek mi?

Bu display_header () fonksiyonu verilen çıkış bir karışıklık yapmak için gidiyoruz, düzenleyici bağlı olarak, t her yerde, ya da boşluk \ tükürmek gidiyor.

Bu seçenek var:

function display_header($page_title) {
    echo '<html>';
    echo '<head>';
    echo "\t" . '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    echo "\t" . '<title>' . $page_title . '</title>';
    echo '</head>';
    echo '<body>';

}

Sonra, sen durumlarda içine almak:

 echo '<table>';
 foreach ($variable as $item) {
      echo '<tr><td>' . $item . '</td></tr>';
 }
 echo '<table>';

karşı

 echo "\t" . '<table>' . "\n";
 foreach ($variable as $item) {
      echo "\t\t". '<tr><td>' . $item . '</td></tr>' . "\n";
 }
 echo "\t" . '<table>' . "\n";

Ve şimdi, sadece gerçekten php bir karmaşa yaptık. Yani çıkış tamponları düşünmeye başlar, ve ben tamamen bu konsept ile tasarımcı kafayı gidiyorum. Ama ben sadece gurur olacağını php ile daha html karışık.

Ve dürüstçe bu malzeme ile hesaplaşmak mümkün olmamıştı:

<?php foreach ($variable as $item) { ?>
 ....
<?php } ?>

Hem verimleri çok daha iyi html oluşturulur, ama benim için, aynı zamanda daha karmaşık bir php dosyası verir. Oldukça basit bir soru, ben bazı güçlü görüşler ve çerçeveler ve OOP doğru itmek için bir arzu olacaktır eminim. Ben bu yöntemleri anlamak, ama yine, programlama için bir tutku olacak asla bir kişiye bazı araçları vererek bakarak en iyi önerileri arıyorum ve sadece şeyler onları verimli olmanıza yardımcı olacak bir şekilde, halletmek istiyor.

4 Cevap

PHP yazarken HTML çıktı girinti unutun. Aksi takdirde tamamen önemsiz bir şey endişesi çok fazla zaman harcıyoruz.

Eğer kolay bir tasarımcı, okumak o koşuyoruz Tidy için yapmak için HTML çıktı temizlemek gerekir. Bu verimsiz görünüyorsa, sadece üretim, geliştirme yapmanız gerekir unutmayın.

Kaynağını izlerken gerçekten HTML düzeni umurumda eğer size girinti ve diğer yapılandırmaları sürü gibi çeşitli seçenekleri ile çıktı sonra can HTML kurmak ise o zaman belki PHP Tidy bakmak.

Bkz http://us3.php.net/manual/en/book.tidy.php

Kodunuzu daha karmaşık büyür, ve tasarımlar daha karmaşık olduğu gibi, ben o şablon cevap bulacaksınız düşünüyorum. Sonunda, sunum mantığı ayrı olmalı ve bu MVC modelinin çekirdeğidir.

Ben şahsen Smarty gibi

Ben son parçacığını için kaçınma yeniden değerlendirilmesi gerektiğini düşünüyorum. PHP çiftleşmiş dili olarak en iyi yer almaktadır. Eğer bu şekilde kullandığınızda, kolayca bir tasarım maketini almak ve dinamik bir sayfa haline dönüştürebilirsiniz. Ayrıca ben neden bahsettiğimi bir örnek için ZenCoding bakmak, onunla standart HTML araçlarını kullanabilirsiniz. Düzgün dizim ve tatlılar her bir dinlenme olabilir. Ayrıca trivially hiç bir ekstra çaba olmadan girinti ve tutarlılık bazı görünüş koruyabilirsiniz.

Şimdi bir şeyler dağınık ve çirkin alma nedeniyle hissettiğiniz gerginliği anlıyorum. Anahtar şablon dosyası PHP daha fazla HTML gibi hissediyor, böylece ayrı saf PHP dosyaları içine şablonun dışına karmaşık mantığı taşımaktır. IDDQD bir çiftleşmiş dili olarak Smarty kullanarak önerir, ama ben Smarty sevdim hiç. Ben sadece bir anlamsız yönlendirme yerine yararlı bir soyutlama olmak biter inanıyorum.

Orada tüm programlama dilleri, PHP bir çiftleşmiş dil olarak iyi biridir. Başka herhangi bir programlama dili gibi olmasını yıkmak için gerek yoktur.