Tek bir sayfanın tüm HTML yazdırmak için PHP kullanmak gerekir?

7 Cevap php

Yani ben hep böyle PHP sayfaları geliştirdik: <?php üstünde gider, ?> altındaki gider ve tüm HTML ya print () ed veya echo () ed alır dışarı. Olduğunu <?php ?> etiketleri dışında outputted olmayan dinamik html olan daha yavaş? Ben bu konuda herhangi bir bilgi bulmak için görünmüyor olabilir.

Thanks!
--Mala

UPDATE: consesus benim eski yol okunması zor olan bunu yapıyor gibi görünüyor. Eğer gibi satır satır dizeleri break up eğer bu durum böyle değil:

print("\n".
"first line goes here\n".
"second line goes here\n".
"third line");

vb Aslında php yapıların dışında html olan daha okumak çok daha kolay hale getirir, bu yolu olarak everything düzgün girintili değildir. Söyleniyor, bu dize birleştirme bir sürü içerir.

7 Cevap

Ben hız konusunda emin değilim, ama bu dinamik unsurları ve bunların görüntüsünü ayırmak için genellikle iyi bir uygulamadır.

CodeIgniter gibi bir çerçeve göz atın: Bu veri kapmak bir "denetleyici" ve bir "model", sort o var ya onunla dilediğini yap, ve daha sonra bir "bakış" (şablon çeşit) onu beslemek.

Bu paradigma MVC denir ve hakkında bilgi edinmek için bir gerçekten, gerçekten değerli bir şey olduğunu. Ben onun baş avantajı daha kolay-korumak kod olarak buldum. Ben bu yaklaşım her zaman yeniden öğrenmek zorunda canavar belge ile bitmiyor.

Kaynaklar:

print() PHP ile HTML hepsini ing zaman hız farkı, ancak muhtemelen ihmal edilebilir, kod çok çirkin olsun, ve sadece düz HTML varsa daha okumak çok daha zor hale getirir.

Eğer print() değişmez statik HTML üzerinden ing olup iseniz Edit: Ayrıca, gerçekten nokta nedir? Bu size hiçbir yararı verir.

Pros

  • Ben görebiliyorum Yok

Cons

  • Okumak zor Kodu

  • Muhtemelen fark olmamasına rağmen, fazladan bir adımdır PHP motoru için işleme Bir adım daha.

Hızı ihmal edilebilir - Bana güven, bu darboğaz olmayacak.

Başka bir MVC framework ile birlikte, size HTML, PHP mantığı ayırır ve aynı zamanda önbelleğe alma yapar gibi Smarty gibi basit bir şablon sistemi, kontrol etmek isteyebilirsiniz.

Daha yavaş ya da daha hızlı olmadığını bilmiyorum, ama (bence) bunu anlamak çok daha zor kod yapar. Hangi Ben genellikle bunu yok neden sanırım.

Olduğunu <?php ?> etiketleri dışında outputted olmayan dinamik html olan daha yavaş?

Eh evet, marjinal ... olduğunu. Ama bu gerçekten sorun değil: bu okunabilirliği ilgili.

Bu şekilde her şey düzgün girintili

Sizin örnek ne yazık ki korumak için yaşadım print-ağır, PHP için oldukça tipik olan, hiç girintili değil!

Iyi, tutarlı girinti tutmak için bu yaklaşım deneyin:

<ul>
    <?php
        // block of arbitrary code blah blah
        //
        $conditions= get_conditions_from_request();
        $isadmin= $user->privileges>=PRIV_ADMIN;
    ?>
    <?php foreach (select_things($conditions) as $thing) { ?>
        <li>
            <strong><?php h($thing->title); ?></strong>
            <?php if ($isadmin) { ?>
                <a href="/editthing.php?id=<?php u($thing->id); ?> (Edit) </a>
            <?php } ?>
            <?php h($thing->description); ?>
        </li>
    <?php } ?>
</ul>

(Bu presumes function h o echo htmlspecialchars ve u o echo htmlspecialchars urlencode., Bu kaçan şeyler alma hakkı güvenli bir site olan esastır yapar çağırır ve herhangi bir zamanda tüm kaçış olmadan "blah $var blah"-style çiftleşmiş kullanma eğilimi olarak, print-PHP tabanlı hemen hemen her zaman yanlış bir şeydir.)

Belki en iyi uygulama, ama karıştırmak için tercih ve maç print () deyimleri. Düzen kodu büyük boyutta, ben print () kullanın, yok ama blok ve ben PHP bloğunun her kelime çıkmadan olurdum, o zaman basalım ederken bir kompleks if / else veya için / rendering ediyorsam dinamik metin ile dinamik olmayan metin var.

Performans en iyi çok önemsiz. Sen bir sayfa oluşturmak, ve bunun üzerine bir zamanlayıcı koyabilirsiniz. (Burada bir tutorial on creating a script timer olan)

Çıktı aynı veri her iki yönde, ve alabilirsiniz gibi birçok örnekleme ile ölçünüz, bu kabaca daha hızlı olduğunu söylemeliyim. Ben aynı çok yakın tahmin ediyorum.

Ben HTML içine gömülü PHP ile bu sayfaların bir çok gördük ve ben bunu sevmiyorum. Alex Mcp önerildiği gibi bir MVC modeli hakkında düşünme olmalıdır.

Html içine gömülü komut ile sorun akış kontrol ve mantık okumak kolay değildir, ve burada ve orada meydana gelen bazı garip sorunlar var. Benim için en iyi çözüm şablon sayfaları oluşturabilir ve daha sonra içeri ve dışarı gider verilerini takas Smarty veya Zend Framework kullanmak için genellikle. Uzun vadede yönetmek çok daha kolay.