2010-01-27 10 views
45
Ben sadece içinde bu gibi pek kodum göz birkaç PHP değişkenleri ile katı HTML istiyorum karışık HTML ve PHP ve en sürede çok çalışmak

: oldukça çirkin

<tr><td> <input type="hidden" name="type" value="<?php echo $var; ?>" ></td></tr> 

. Daha kısa bir şey yok mu, daha çok aşağıdaki gibi?

<tr><td> <input type="hidden" name="type" value="$$var" ></td></tr> 

Bu mümkündür ama Bundan iyisi var mı

echo "<tr><td> <input type="hidden" name="type" value="$var" ></td></tr>" 

gitmiş "" (eğer '' ile hepsini değiştirmek zorunda) ve düzeni ile takılıyorum?

+0

PHP'nin çift tırnaklı tek tırnaklı daha hızlı olduğunu unutmayın. d gerekiyorsa, echo ' kullanın '; –

+1

@LucianMinea Aynı hızdalar. Tek tırnaklar ve çift tırnaklar sadece * alıntıdır *, "hızlı" değildir. Bu sıklıkla yanlış bilgilendirilir ve tamamen yanlıştır. – meagar

+0

Tekli hızlıdır ve büyük kod bloklarında görmek kolaydır. Bunun nedeni, PHP'nin çalışma zamanında çift tırnaklı bir "temizlemeyi" otomatik olarak gerçekleştirmesidir, ancak tek tırnak işareti içermez. Çift tırnak işaretleri de, söz konusu kodun sıkışıp kalmasını sağlar, çünkü tırnaklar yanlış bir konumda kapanır. Ayrıca, erkeğe az bir açıklama ile bir çözüm vermeye çalışıyordum. Bunu '91'den yapıyorum, bu yüzden benim zeminimi biliyorum. –

cevap

55

şimdi aksi modası tavsiyelerine rağmen kullanımı tamamen kabul edilebilir senin kod, kısa etiket sürümü var: (önceki PHP 5.4 kadar) kısa etiketleri zorunlu

<tr><td> <input type="hidden" name="type" value="<?= $var ?>" ></td></tr> 

php yapılandırmasında etkin olması

. Tam olarak yazdığınız kod gibi çalışır; Bu satırlar, iç uygulamalarında tam olarak aynıdır:

<?= $var1, $var2 ?> 
<?php echo $var1, $var2 ?> 

Tüm bunlar yerleşik çözümler için geçerlidir. Çıktınızda verileri katıştırmayı kolaylaştıran çok sayıda 3. parti şablon kütüphanesi var, smarty başlamak için iyi bir yer.

+4

@code_burgar Kısa etiketler PHP6'dan kaldırılmayacak ve şu anda kullanımdan kaldırılmayacaklar. – meagar

+1

Hmm, yanılıyor olabilirim, ama çıkarıldığından emindim. Onlar kalsalar bile, onları kullanmak en iyi ihtimalle şüpheli bir uygulamadır. = whoops. Bazı sunucularda varsayılan olarak devre dışı bırakıldıklarından bahsetmiyoruz. –

+2

@code_burgar PHP komut dosyalarının içine XML yazmayın, XML verilerinizi kodlayın ve elde edilen çıktıyı yazın. Short_open_tags devre dışı bırakılmış bir sunucuyla hiç karşılaşmadım. – meagar

18

HEREDOC sözdizimini kullanın. Tek ve çift tırnak, değişken ve hatta işlev çağrılarını değiştirilmemiş/unescaped html biçimlendirmesiyle karıştırabilirsiniz.

+2

HEREDOC sözdizimi ile ilgili tek sorunum, sayfalarımın HTML bölümleri için söz dizimi vurgulama özelliğini bozmasıdır. – meagar

+0

@meagar bunu, bazı editörlerde geçersiz kılacak bir kuralınız olmadığı sürece yapar. –

+0

Sadece editör ile ilgili klingon gemilerini endekslemeyeceğinize dua edin :) editör hakkında, VIM kullanın – gcb

1

Görünümleriniz için daha kompakt bir sözdizimi sunan birçok şablon sistemi vardır. Smarty saygıdeğer ve popüler. This article, 10 tane daha yüklenmektedir.

1

Nedeniyle ilgili daha fazla bilgi için shorttags kullanarak karşı öneriyorum, Are PHP short tags acceptable to use? bakın.

Şahsen ben çok

<a href="<?php echo $link;?>">link description</a> 

sürece ben iyi dizim bir kod editörü olduğu gibi gibi HTML ve PHP karıştırma umursamıyorum, ben bu oldukça okunabilir olduğunu düşünüyorum. HTML ile HTML'yi yankılamaya başlarsanız, HTML'nizi vurgulayan sözdiziminin tüm avantajlarını kaybedersiniz. Yankı HTML'in başka bir dezavantajı, tırnakların olduğu şeydir, aşağıdakiler çok daha az okunabilir IMHO'dur.

echo '<a href="'.$link.'">link description</a>'; 

basit yankı ve PHP basit döngü ve HTML kalanını yapıyor benim için en büyük avantajı bu girinti sonunda okunabilirliği/taranabilirlik artırır, tutarlı olmasıdır.

+3

Kimse * bu soruyu referans olarak kullanmamalıdır * yanlış bilgilendirme ve öznel düşünce yığını. – meagar

+0

@meagar: Kesinlikle! Belirtmek gerekirse, buradaki bir yorum [vurgu [http://php.net/manual/en/function.echo.php], kısa eko etiketinin php5.4'ten itibaren kısa açık sözdiziminden ayrıldığını belirtir. İşte bu (yukarıdaki linkin sonundaki el kitabı) diyor. "** echo ayrıca bir açılış işareti ile açılış etiketini hemen takip edebileceğiniz bir kısayol sözdizimine sahiptir. PHP 5.4.0'dan önce, bu kısa sözdizimi yalnızca short_open_tag yapılandırma ayarının etkin olmasıyla çalışır. **" –

4

Smarty şablon motorunu projeleriniz için standart bir php lib olarak benimsemelisiniz.HTML bölümünde, kullanım sprinf (önce php bölümünde

Name: {$name|capitalize}<br> 
+5

Ne var? argümanlarınız lehinize mi? – Rob

+2

lehine argümanlar: - html'den php kodunu ayırma (bakım için daha iyi) - akıllıca bir şablon tarayıcıda olduğu gibi görüntülenecektir. (Programlama deneyimi olmayan ön uç tasarımcılar, daha iyi anlaşılabilir) - önbelleğe alma. (Sayfanızın birden fazla önbelleğe alınmış kopyasını girişlere göre tutabilirsiniz; bu, tüm sayfayı yeniden oluşturmaya göre çok daha hızlı olabilir) dezavantajları - smarty biraz fazla güçlüdür ve programcılar bir şablona çok fazla mantık koyabilirler. .. ama en azından görüntü mantığı – Bingy

+0

Tam olarak ne diyor. Veritabanınıza bağlanmak için bir veritabanı bağlantı sınıfı yazmıyor musunuz? Şablon yapmak için neden bir şablon motoru yazıyorsunuz? – gcb

1

http://www.smarty.net/) değişkenlerden sabit dize oluşturmak için: Yapabileceğiniz HTML bölümünde Sonra

$mystuff = sprinf("My name is %s and my mother's name is %s","Suzy","Caroline"); 

ne olursa olsun gibi:

<p>$mystuff</p> 
İlgili konular