PHP ile daha iyi Smarty kullanımı nasıl?

11 Cevap php

PHP ile Smarty kullanarak, bazen ekstra zaman için kullanılmak üzere ihtiyaç olacağını bulundu

1) using quite different syntax than PHP itself
2) need to check small cases, because documentation doesn't give finer details, such as for "escape"

http://www.smarty.net/manual/en/language.modifier.escape.php

"tırnak" çift tırnak tek ya da tek tırnak için için, yani bunu test etmek için kod yazmak gerekir: bu kaçış demiyor. Ayrıca kaçış durum için: "javascript" - tam olarak ne anlatmak ve kaçtı nasıl olamaz.

3) karmaşık bir şey, yardımcı fonksiyonları veya değiştirici yazmak gerekir, bu yüzden yeni dosyalar ve yine PHP yapıyor biten bir yaratma ihtiyacı var.

Bu arada, Smarty başına kullanım PHP üzerinde iyi bir hız sağlamak kullanarak yapar? teşekkürler.

11 Cevap

İlk olarak, PHP çiftleşmiş dildir. Eğer PHP tabanlı web uygulamaları için bir şablon sistemi kullanarak bahsederken aklınızda tutun.

Şimdiye HERHANGİ çiftleşmiş motoru kullanarak duyduğum tek 'gerçek' argümanı onlar PHP bilmiyorum ve size güvenmiyorum kime şablon tasarımcıları varsa kullanışlı olabilir şablon manipülasyon için basit bir dil sağlamak oldu mantıklı PHP kullanmayı öğrenmek.

Bu argümanların ilgili olarak, ben senin şablon tasarımcıları şablon tasarımı için yeterli PHP öğrenmek için yetkili değilse, muhtemelen yeni şablon tasarımcıları bulma düşünmelisiniz iddia ediyorum. Ayrıca, PHP kendisi kodunda karşı bir şablon kullanabilirsiniz kontrol deyimleri için farklı bir sözdizimi sağlar. Örneğin:

<? foreach($array as $key => $val): ?>
    <?= $val ?>
<? endforeach; ?>

VS:

<?php
    foreach($array as $key => $val) {
    	echo $val;
    }

?>

Şahsen, ben çiftleşmiş motorları PHP, çünkü ortaya çıktı inanıyoruz:

  1. Diğer diller bunu bu şekilde bulunuyor
  2. Iyi PHP programcıları sunum ve uygulama mantığı ve şablonları arasındaki mesafeyi zorlamak için bir yolu bunu yapmak için kolay bir yol vardı ihtiyacı olduğunu fark etti.

Birinci nedeni, sadece çok saçma. İkinci nedeni biraz kendini kontrol ve uygulama katmanları ayırma gerekliliği hatta ilkel bir anlayış ile aşılabilir. MVC tasarım deseni, bu sorunla bir yoludur. Bildiğim kadarıyla bazı kendini kontrol egzersiz gibi, benim kuralı olduğunu sadece gerekli döngüler ve tablolar filtre, kaçış, ekran çıkışı biçimlendirmek fonksiyonları yanı sıra alışmak durumunda.

Yaygın Smarty kullanılmış olması, dürüst her zaman buna çözüm yaptım daha fazla almak için daha fazla engel ile bana sundu söyleyebiliriz. Eğer bir şey, PHP tabanlı şablonları geçiş aslında şablonları ve kod her ikisi için geliştirme zamanı azalmıştır budur.

Ben motorları çiftleşmiş sevmiyorum. Ben PHP için onları çok kayıplı ve kaynak-yoğun buluyorum.

MediaWiki ile, sürüm 1.6.x etrafında varsayılan Smarty kullanarak geri adım attı ve sadece performans büyük bir gelişme ile, PHP'nin yerleşik çiftleşmiş kullanın.

Ben insanların bir çiftleşmiş sistemi (, bağlantılar ekleyebilir renklerini değiştirmek, metin veya sayfa bölümleri çıkarmak) ile ne yapmak istediğinizi en iyi olay kanca basit bir sistemle yapılır öğrendim.

Laconica, açık mikroblog platformu, varsayılan olarak herhangi bir çiftleşmiş yapmaz. Biz çiftleşmiş için deli insanlar için bir eklenti var.

Smarty kesinlikle orada en iyi şablon motorlarından biridir. Benim durumumda insanlar iyi hepsi PHP üstüne herhangi bir çiftleşmiş motoru kullanmadan önce daha iyice yoluyla kullanım durumları düşünmek için tavsiye edilir rağmen.

İlk olarak, PHP kendisi şablonlar için idealdir. Onlar kötülük her türlü yürütebilir yana güvenilmeyen kullanıcılar, şablonları oluşturmak veya düzenlemek için izin eğer başka çiftleşmiş motoru kullanmak için hemen hemen tek gerekçesidir. Yani, proje, kullanıcı-düzenlenebilir şablonlar varsa, Smarty kullanın. Değilse, PHP ile sopa.

Sorununuz kod ve düzeni ayrılması ise, ben size hafif bir MVC tarzı yürütme modelini uygulayan içine bakmak öneririz. Veya, şablonunuzda derin mantık kod varsa, muhtemelen bazı üstlenmeden yapmak zamanı, daha küçümser koymak.

Performans başka bir husustur. Evet, Smarty şablon render bir maliyet ile birlikte geliyor. Bitti Ama sonra, çıkış, gelişmiş etmmek sizi lider, önbelleğe olmalıdır. Aynı PHP şablonları için geçerli. PHP çıkış tamponların kullanılması yoluyla granül önbelleğe alma modelleri her türlü uygulamaya izin verir. Ama erken optimizasyon dikkat: do you kod tam konum ve belirledik sonra gerçek darboğazlar ne olduğunu!

Smarty veya başka bir motoru kullanılarak büyük maliyet geliştirici zaman şeklinde gelir. Bu karmaşıklık başka bir katman var ve siz tüm boyunca saf PHP içinde başarılı olabilirdi ne yapıyor içine trick motora sahip olduğu kaçınılmaz durumlarda kendinizi bulacaksınız.

Ben şablon motorları gibi ve onlar kullanılması gerektiğini düşünüyorum, ancak çiftleşmiş dili olarak PHP üzerinde önemli bir gelişme değil çünkü Smarty bir özel durumda, ben, o zaman kaybı olduğunu düşünüyorum:

  • Yeni sözdizimi hala belgede rastgele yerlerde yerleştirilen özel etiketlerle eski kavramı etrafında dayanır.
  • Smarty HTML sözdizimi / yapısını anlamak değil, çünkü siz geçerli / iyi biçimlendirilmiş HTML oluşturmak için yardımcı olamıyoruz. Smarty etiketleri HTML'ın sözdizimi ihlal, böylece onları ekledikten sonra, diğer standart araçlar da size yardımcı olamaz.
  • Smarty çıkış, sadece PHP gibi, varsayılan (çıkmamış) güvensiz olduğunu ve have to her yerde |escape eklemeyi unutmayın nereye HTML çıktı veri.

PHPTAL: tüm bu sorunları giderir ben aşık oldum belirli bir PHP şablon motoru var.

Hala öğrenmek zorunda, yeni bir şey, ve bu uygulama için bir depenency, ama ben XSS ve çözüldü kötü biçimlilik sorunlarınız sorun değer yapar düşünüyorum.

Sadece Smarty gibi PHPTAL PHP kez derlenmiş ve önbelleğe, bu yüzden performans ham PHP ile karşılaştırılabilir olduğunu.

Bildiğim kadarıyla Smarty iyi şablon motorlarından biri bildiğiniz gibi bilge hız. Belki de buna alışmak için bir süre alır. Yalnız sistem üzerinde çalışmayan ve html ve stil dosyalarının miktarı muazzam Ama eğer önemli ölçüde gelişimini hızlandırır.

Benim son proje üzerinde çalışırken tasarım birkaç kez değişiklik oldu ama mantık aynıydı. Ben Smarty veya başka bir şablon motoru bir çok yardımcı olur zaman ki en iyi örnek sanırım.

Şahsen ben çiftleşmiş için Blitz kullanın. Sitede yazarı hızlı çiftleşmiş motoru ve PHP için farklı çiftleşmiş sistemleri arasında performansı üzerinde bir (önyargılı?) Grafik sağlar iddia ediyor. Ben Smarty kendimi kullanılmış değil, ama bu, onun performansı hakkında bazı ipuçları verebilir.

http://alexeyrybak.com/blitz/blitz_en.html

Bu yazılımlar bir ekstra katman, bir, eee, başka çiftleşmiş dili üstüne, yani bir çiftleşmiş dil olarak bir çiftleşmiş motoru olarak Smarty kullanarak muhtemelen, bunu kullanarak değil gibi ölçülebilir olmayacaktır. Düzgün önbelleğe alma özelliğini kullanırsanız, diğer yandan, genel performans artışı fark olabilir.

Smarty şablonları diske geçici dosyaları yazma içerir tarayıcısı, çıkış olarak önce ön-derlenmiş bulunmaktadır. Bu adım, kesinlikle performans cezalandıran, en azından biraz.

Eğer uygulama ve sunum ayrı tutmak için yeteneği eminiz, ve sunucu tarafında önbelleğe alma gerçek bir ilgi varsa, muhtemelen sadece saf php çiftleşmiş kullanmalısınız. Böyle Zend Framework gibi bazı MVC çerçeveler, kendi PHP gibi çiftleşmiş sistemleri var.

Öte yandan, smarty nerede ait ne kadar belirsiz özellikle nerede uygulanmasından sunum düzgün bir ayrılık zorlamak için iyi bir yoldur. Size bu gerekli ayrımı uygulamak için disiplin yardımcı olabilir.

Ben çok, çok kullanılan ve düşkün olduğum Java Sunucu Tag Libraries (JSTL), bana hatırlattığı gibi olduğunu söyledi, benim PHP projelerinin çoğunda Smarty kullanabilirsiniz.

Pros

  • HTML dosyalarının hiçbir PHP (verir PHP ve HTML identing hem de)
  • Borular {$ var | default: "Hiçbiri seçilmiş"} {$ var | urlencode}
  • Foreachelse: {foreach item = sıra = $ sonuçlarından} {$ row.name} {
    foreachelse} Sonuç {/ foreach}
  • Themable web siteleri / sayfaları (sadece CSS kullanarak bu sınırlar vardır)

Cons

  • Diğer dil sözdizimi
  • Her zaman açık kod {"Ymd" | strftime: $ timestamp} {$ array | @ var_dump}
  • Hafif havai

Ben çok "şablon" yaklaşımı (MVC) tavsiye edebilir, ama Smarty ve düz PHP hem görev için vardır.

Bir Smarty kullanarak ya da daha fazla veya daha az bir felsefi pozisyon.

Ben çok işlevi kullanmayın rağmen ben, bunu kullanın. Bu şekilde kullanarak, şablonlar çok basit olma eğilimindedir. , Parametreleri ile ilişkilendirilebilir bir dizi geçmek bileşenleri yineleme ve sonuç sayfasında gerekli unsurları yerleştirin. Bu temiz ve iş mantığının (umarım) ücretsiz şablonları tutar.

Ayrıca, Smarty uzanan oldukça basittir.

Örnek olarak, I) (bir fetchUsingStyle var () almak için bir stil parametre eklendi. Bu bana oldukça kolay bir sitenin farklı düzenleri arasında geçiş yapmanızı sağlar.

Üstelik, benim fetchUsingStyle () bir şablon için çeşitli yerleri arar: Birincisi geçerli stili bulmaya çalışır. Eğer bulamazsa varsayılan bir stil kullanarak şablon yüklemeye çalışır. Son olarak, bir saf statik kukla dosya, daha sonra uygulanacak bir şey için bir yer tutucu bulmaya çalışır.

Böyle Codeigniter, çekirdek PHP daha Onun daha iyi gibi MVC deseni ile Smarty kullanın deneyin

Eğer sadece html dosyalarını kullanabilirsiniz ve bunu gereken yere php kodu enjekte varken neden bir şablon motoru kullanmak? Eğer Psttt ile yapabilirsiniz! php için çiftleşmiş motoru

Burada tam kaynak kodu http://github.com/givanz/psttt