Motor şablonu vs PHP [kapalı]

20 Cevap php

Ş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.

20 Cevap

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:

  1. Son kullanıcı özelleştirme için güvenlik eklendi. Saf PHP temalar bir kullanıcı ve kurulum zarar için kısıtsız yeteneği var. O iyi biri olmadığını Böylece bir şablon motoru, bu riski ortadan kaldırır.
  2. Bu tür grafikler veya web tasarımcılar olmayan programcılar için kullanım kolaylığı.

Düz-php için:

  1. Saf PHP hızı bunun üstüne inşa herhangi bir şablon motoru ile uyumlu olamaz.
  2. PHP full güç çıkışı için kullanılabilir, ve sadece bir yorumlanmış veya filtrelenmiş bölümü.

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:

  • Bir motor ile şablonlar içine uygulama ayıran aksak kod hataları için uygulama daha savunmasız hale getirir
  • Ad doğrudan uygulama içine inşa olmayacak çünkü üstlenmeden zaman şablonları kullanarak size gelecekte daha fazla esneklik verebilir
  • Şablonları kullanarak sunum katmanı OUT iş mantığını ve kod tutmak için (kuvvetler) geliştiricileri teşvik eder.
  • Şablonları kullanarak bu veri kümeleri kadar alay ve bir şablon motoru onları geçmek ve site verileri ile nasıl görüneceğini bir önizlemesini almak daha kolaydır

Peki, bu sadece benim düşüncem, ama motor şablonu emmek. Önce motor şablonu nasıl uygulandığını anlamak ve daha sonra nasıl kullanılacağını öğrenmek zorunda. Yalnız PHP iyi yapar ve çok daha fazla esneklik sunuyor, çünkü, sadece boşa zaman görünüyor.

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ı:

  • (Ben Form görünümünü özelleştirmek için kolay, esnek ve genel sistem sağlanan çiftleşmiş dili olarak PHP ile herhangi bir çerçeve görmedim) görüntüleme ve işleme biçimi.
  • HTML / XML belge yapısını anlamak.
  • Otomatik XSS enjeksiyon filtreler.
  • (Yani vb sütunlardaki verilerin görüntülenmesi, sayfalama sisteminin görünümünü özelleştirerek) sunum katmanı çeşitli ortak sorunların çözümünde
  • Şablon taşınabilirlik ve şablonları uygulama mantığı ve uygulama detayları true ayırma.

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.

Yani benim tavsiye yüzden PHPTAL. OPT2 Tamam da.

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.

Bizim için iyi çalıştı PHP hafif bir şablon motoru bina bulundu. Iyi kod ayrılması için izin verir, ve bizim grafik tasarımcı takip için birkaç basit kuralları öğrenebilirler, fakat çoğu HTML / CSS, PHP yazıyor. Ben arayüz hakkında çok düşünmek zorunda kalmadan, ağır kaldırma kodu yazabilirsiniz.

PHP onun bir betik dili bir çiftleşmiş motoru değil.

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

Ben bağımsız bir şablon motoru öğrenme vakit geçirmek için olsaydı, ben yerine yerine Çerçeve öğrenme vakit geçirmek istiyorsunuz. Benim tercihim PHP kendisi yerli çiftleşmiş kapasitesi ile birlikte çerçevenin gücü sağlar MVC yaklaşım kullanarak uygulanan, Zend Framework, ile gitmektir.

Ben VirtueMart, Joomla veya PHP şablonları kavramı nedeniyle olmadığını biliyorum, ancak kendi grafik tema VirtueMart ayarlayarak PURE CEHENNEM olduğunu bilmiyorum. (Ben düz CSS-styling bahsetmiyorum.)

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!):

http://www.raintpl.com/PHP-Template-Engines-Speed-Test/

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:

  • Güvenlik (en önemlisi ne kadar şimdiye kadar)
  • Değil Ayrıntılı (php gibi)
  • Daha çiftleşmiş özellikler

Daha derinlemesine:

http://www.pkj.no/blog/2012/08/08/php-use-a-template-system-or-not

Şu anda, en hızlı ve kullanımı daha kolaydır. PHP şablonlar motorlarında bir kriter paketi yaptıktan sonra, dal sadece yerli php dilinde sonra ikinci sırada geliyor.

Bu bir göz atın:

www.phpcomparison.net

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".