Şu anda PHP üstüne bir şablon motoru karşı bir şablon motoru olarak PHP arasındaki seçimi ile ilgili bir tartışma yaşıyorum.
Seçim ve neden nedir?
PHP bir şablon motoru kendisi olup olmadığını, neden başka motor şablonu söylüyorlar.
Ben Smarty tanıttı zaman, web tasarımcıları smarty değişkenler ile HTML üretmek almak oldukça yalındır olduğunu öğrendim. Programlama ekibi millet şimdi Smarty değişkenlerin içeriği yani üretim, daha fazla arka uç iş konsantre.
Bu çalışma daha fazla kişi arasında bölünecektir edememek ile, geliştirme yaşam döngüsü kısalmıştır, ve sonuçta daha iyi tasarımlara yol açmıştır.
Şablon motorlar için:
Düz-php için:
Ben PHP kendisi tercih mümkünse eğer. Ve en millet özel bir tema yaparak yazılım kesmek istemiyorum, bu yüzden üstünkörü okuma almak ve güvenliğini araştırmak için kolay. O dedi, ben çiftleşmiş ve programlama, ve hatta bazı grafik sanatları hem de yok "arasındaki adam" değilim; Benim birikiminiz sıkı bir programcı ve sıkı bir sanatçı / tasarımcı farklıdır.
Aşağıdaki nedenler geçerlidir:
PHP is not bir şablon motoru, ancak şablonları yazmak için kullanılabilecek bir dil, veya şablon motorları. Bir şablon motoru komut bulun şablonları düzenlemek veya bunlara komut verileri atamak sağlar sadece bir dil değil, aynı zamanda programlama API değildir. Saf PHP size kesinlikle hiçbir şey sunuyor - bu sadece bir dildir. Bunun yerine, (temelde, bu şablonları yazmak için kullanır PHP dışında, Smarty gibi, tam olarak aynı şekilde çalışır) karşılaştırmalar için Zend Framework Zend_View gibi kitaplıkları, almalıdır. Eğer bir şablon dili olarak PHP veya başka bir şey ile bir şablon motoru kullanmak gerektiğini sormalıdır.
Bu dillerde kendilerini çiftleşmiş gelince, o da sıradan ... döngüler ve koşullar şablonları yazmak için yeterli, ancak bu "yeterince" kolay, rahat, verimli ya da esnek olduğu anlamına gelmez. PHP şablon tasarımcıları için özel bir şey sunmuyor, fakat (Smarty gibi) birçok "çiftleşmiş dil" PHP sadece sınırlı bir alt kümesini sağlar, bu yüzden programcılar PHP tercih olduğunu şaşırmadım. En azından onlar fonksiyonları yazmak ve (bence) bu çok büyük bir OOP kullanmak, ama çalışır ve gerçekten yardımcı olur.
Noktası özel çiftleşmiş dilleri PHP sakıncaları ile sınırlı olmadığı, ancak onların tasarımcıları unsually "değişkenleri ve bir döngü görüntüleniyor yeterli" olduğunu iddia ederek, bunu görmüyorum. Çiftleşmiş dilleri çok daha etkili olabilecek olası alanları:
Bu yolu takip çiftleşmiş dillerden örnekler Bazı benzer fikirler de TinyButStrong bulunabilir. PHPTAL ve Açık Güç Template 2 Yukarıda bahsedilen, ama ne yazık ki bu motor şablonu son derece yavaş vardır.
Eğer şablonları yapıyor olmayan bir programcı varsa bir şablon motoru kullanarak yardımcı olabilir. Birçok durumda, basitleştirilmiş şablon dili PHP kendisinden daha almak için olmayan bir programcı için daha kolay olabilir.
O dedi, ben kendimi uzak sadece bana (ya da ben ve diğer geliştiriciler) ne zaman şablonları kullanarak hareket bulabilirsiniz.
PHP en görevler için gayet uygun, ama bir çiftleşmiş motoru daha kolay ölçekli bir proje yardımcı olabilir.
Kendi rulo (ve sundukları daha fazla gerekmez) zamanı yoksa Smarty ya da benzeri raf olanlar Off PHPTAL büyük. Ayrıca, oldukça kolay size daha özel bir şey gerekiyor bulursanız daha sonra, kendi uygulama ile bunları değiştirebilirsiniz / değiştirebilirsiniz.
Ben şahsen bu şekilde dışarı tutar ve basit Çünkü öncelikle, PHPTAL ile iyi bir deneyim yaşadım.
Eğer HTML sözdizimi karıştırmak zaman şablon motoru olarak PHP şikayet olmaz. Bu, vb etiketleri, mis-yuva bunları kapatmak için unutalım olacak
Titizlikle sitenizin HTML enjeksiyon (XSS) güvenlik açıkları olacak, htmlspecialchars()
her yerde eklemeyi unutmayın bu yüzden sürece PHP'nin çıktı, varsayılan olarak kaçtı değildir.
<p>Hello <?= $name ?></b>
<!-- Simple template full of errors -->
Bu sorunlar, XHTML oluşturmak çalıştığınızda çok daha kötü properly. Elbette yapabilirsin - - Bu düz PHP ile bunu yapamazsınız o değil ama o daha fazla çaba ve özen gerektirir.
Savant aradığınız budur. Onun yerine PHP üstüne bir yeni bir şablon dili yorumlama şablonlarınızda PHP operatörleri kullanmanızı sağlar güzel bir sarıcı sınıf.
Artıları:
It makes sense not to add extra work to the system.
No learning curve for developers
If you everyone is disciplined then this is the way to go. (Savant)
Eksileri:
Savant düzgün ayırmak için teşvik etse kalkınma kodundan iş mantığı ayırmak için geliştirici zorlamaz. Ben kırık asla bir kural var. Sen şablonları tek çıkış değişkenleri, kullanım koşulları ve döngüler yapabilirsiniz. Eğer bir geliştirici şablonda değişkenleri oluşturmak için asla izin gerekir. Ne yazık ki geliştiriciler olursa olsun onlara kaç kere bunu görünmektedir asla. Geliştiriciler tamamen ayrı iş ve tasarım tutmak zorunda çünkü Yani, Smarty gibi bir motoru kullanarak o buna değer olur.
Kendim veya birçok geliştiriciler yok biri için bir proje yapıyorum ben Savant kullanma eğiliminde. Sadece benden çok daha büyük onun bir proje daha sonra Mimarlık ben Smarty gibi bir şey için gidersiniz.
Her iki şekilde de, kod ayırma sen Savant veya Smarty kullanımı önemli bir hava. Ben iyi diğer seçenekler de orada vardır eminim.
Aşağıdaki makale toplamı-up for PHP Template Engine ile ilgili farklı bakış noktaları.
Doing PHP templates of the third kind http://www.tinybutstrong.com/article_3rd_kind.html
Herhangi bir yeni proje için benim seçimim muhtemelen sadece onun yerine başka çiftleşmiş motoru kullanarak, muhtemelen bir MVC framework ile birlikte, PHP çiftleşmiş yeteneklerini kullanmak olacaktır. Sonuçta, kod sadeliği veya ayrılık temizlik için, gerçekten sizin kod {$myVar}
veya <?= $myVar ?>
olup olmadığı önemli değildir. Bu koşullar, döngüler, ya da önbelleğe alma gibi backend-teknolojileri gibi daha karmaşık özellikler çiftleşmiş PHP veya MVC framework gibi iyi (ya da daha iyisi) ele alınabilir.
Ben de yaklaşımları ile (ve bir çiftleşmiş motoru olmayan) kullanılır, ama sadece kişisel projelerde, asla ekibi projelerinin, bu yüzden belki de böyle bir ortamda bir çiftleşmiş motoru kullanımı için zorlayıcı argümanlar vardır var.
PHP kodlama özellikleri aynı size tasarımcılar ve geliştirici bir ekip çalışması eğer işi parallelize bir şablon motoru gerekir, bu yüzden özelliği olan tasarımı ve tasarımcıları HTML ile çalışma izin, gelişti.
My personal choice is Raintpl, because is lightweight, friendly and fast here a benchmark can help you choose (also smarty and savant are nice!):
Ben bu soruyu sordu, ben rastladım mustache. Var Bu mantık daha az şablon dilidir.
Yani bu size şablon mantığı her türlü eklemek için imkanınız var PHP veya smarty gibi aynı değildir, ama zorlar görünümü modelleri gibi bir şey tüm mantığı tutmak.
Bu benim için daha sonra mantık hala mümkün şablon diline geçiş daha iyi bir seçenek gibi görünüyor.
Geçenlerde bu konuda bir blog yazısı yazdı.
Yalnız güvenlik aşkına, kesinlikle (Dal güvenli) bir çiftleşmiş motoru kullanabilirsiniz.
(Örneğin Twig gibi) iyi bir çiftleşmiş motoru sunmaktadır:
Daha derinlemesine:
http://www.pkj.no/blog/2012/08/08/php-use-a-template-system-or-not
Ben iş mantığı ve sunum mantığı arasında ayrılık yüksek derecede tercih çünkü ben PHP bir şablon motoru kullanabilirsiniz. PHP (veya başka herhangi bir programlama dili) HTML dağılmış yok olduğunda web programlama çok daha kolaydır. Bunun arkasında Microsoft'un kod çok popüler.
Ben KudzuPHP adında bir şablon motoru kullanabilirsiniz. Bu Klasik ASP benim KudzuASP bir liman. Bu iş kuralları barındıran ve mantık şablon motoru sonra şablon motoru için bir olay işleyicisi haline kodu çağrılan olduğu birçok şablon motorlarından farklıdır. Bu yaklaşım PHP kod kodunu değiştirmek gerek kalmadan (sunum büyük blokları hareket) şablonları değiştirmenize olanak sağlar.
KudzuPHP o kendi kütüphane sistemini içerir ve yeni uzantı etiketleri ve kütüphaneleri yazma çok kolaydır.
You can find KudzuPHP here: http://www.andrewfriedl.com/downloads/ If you want a version embedded in a Wordpress plugin that allows you to code against the Wordpress API without PHP go top Wordpress.org and search the plugins for "Kazoo".