PHP etiketi kütüphanesi

13 Cevap php

Ben kodu ile karışmış HTML duramaz. Ben ancak midesi hissetmeden bu şablonlardan birini bakabilirsiniz. Bazı çiftleşmiş sistemi kullanmak mantıklı, senin emrinde "web tasarımcıları" bir orduya sahip olduğunda ben, biliyorum, ve sadece geliştirici iseniz. Ben Smarty hakkında çok şey duydum. Ama benim durumumda o zaman henüz daha işin kaynağı olmuştur.

Neyse, bu sefer ben yalnız gidiyorum, bu yüzden meşhur kutup bir HTML şablonu dokunmak istemiyorum. Peki ben şu anda böyle görünüyor yapıyorum:

<?php
$page = new html_page('My wonderful page');
$page->add_contents(new html_tag('p', 'It works', array('id' => 'helloworld', 'class' => 'somecssclass')));

echo $page->render();
?>

Her şey iyi ve züppe nesneler güzel bir hiyerarşi aittir. Tabii ki küçük sınıfların bir şey var, ve ben dinamik sınıflarını kullanarak düşünüyorum (automagically türü 'bir' bir html_tag nesne yaratacak örneğin, 'html_a'.)

Şimdi, benim sorum: bu başka kimse bu yapıyor gibi görünüyor. Neden? Ben orada çok uzağım ve benim zayıf, oksijen yoksun zihin büyük resimde bir şey eksik?

(Ben açıkça tam olarak yaptım bir açık kaynak kitaplığı hatırlıyorum, ama aslında şeyler hayal ediyorum sürece, ben HTML işlemek için bu yaklaşımın düşünce tek ben değilim So. Artık bulamıyorum.)

Bu konuda herhangi bir düşünce var mı? Eğer :-) kolayca ben olabilir outfan benim en sevdiğim dil Perl, yani, (başka bir dil tavsiye kaçının lütfen. PHP ile şaşırıp.)

Edit

-Ih, ben bir sinir vurdu gibi görünüyor. Bazı açıklamalar:

  1. Ben bu projede sadece geliştirici değilim.
  2. Nasıl HTML kodu karıştırma değilim? Benim kitaplığından bir "html_tag" nesne DOM bir düğüm, diyelim ki, oldukça benzer. "Render" yöntemi html (güzel girintili, ben eklemek gerekir) oluşturur ama herhangi bir açılış yazmak ya da herhangi bir yerde etiketi kapanış yok biridir.
  3. Ben birkaç görevler için küçük nesneleri oluşturmak. Bu nesneler etiket nesneleri oluşturmak için yöntemler var; Bu çıkan nesneler daha sonra tabloları veya sayfalara, diyelim ki, içine sokulur.
  4. Ben PHP ile sıkışmış olduğumu söylemiş miydim?
  5. Benim kütüphane nesneleri bulmak için bazı ilkel erişim yöntemleri var. Yani yayınlanmıştır yineleyici örnek 26288 göreli kolaylıkla uygulanabilir.
  6. Ben her zaman için gerçekten güzel bir sorun düşündüm performansı (Yet.) hakkında endişeli değilim, ama henüz orada değilim.

13 Cevap

Biraz farklı, ama henüz benzer. Ben bir article about using DOM for binding variables to templates yazdı. Bunu ilginç bulabilirsiniz.

Temel kullanım harf:

$t = new Domling('<p class="hello"></p>'); 
$t->capture('hello')->bind("Hello World"); 
echo $t->render();

Üretir:

<p class="hello">Hello World</p>

Eh, alt çizgi hala kod ile HTML karıştırma konum olduğunu. Eğer bir "div" bu "p" etiketini değiştirmek istedi, sadece bunu yapmak için kod dolaşmak gerekiyor. Senin yöntem sunduklarını düşünün:

  • HTML ile kod karışımları
  • tüm istekleri ayrıştırmak için yükü ekler
  • HTML üzerinde yeni bir "dil" tanıttı

Yaklaşımı farklı olabilir iken, özünde, aynı sorunları uzakta olan almak için çalışıyoruz şablon dilleri vardır.

Tek başına (veya bir grup) çalışıyorsanız sadece PHP şablon dili olalım, daha kolay olmaz mıydı?

$page = new Page('test.html');
$page->load($data);
$page->render();

ve test.html "şablon" in

<html>
<head>
  <title><?php echo $title ?></title>
</head>
<body>
  <p><?php echo $hello ?></p>
</body>
</html>

Ne diğer şablon motorları gerçekten yukarıdaki kodu resmileştirmek olduğunu yok. Eğer temelleri (yankılanan değişkenler, temel koşul, döngü) için sopa ama, aslında bir şablon dili tüm güce sahip, ama tanıdık PHP ve hiçbir performans kaybı ile.

Dahası, örneğin aksine, [) (0] i gerçekten {değişimden çok farklı değil bunu dokunmak istemediğini biliyorum, ama kodu bir "div" için bir "p" değiştirme (HTML değiştirebilir } {için [(1)]}), koduna defterleri kalmadan.

Bu kontrol: php tag library hangi JSF uygular

Senin bahsettiğini emin değilim. Eğer php için bir şablon kütüphanesi arıyorsunuz? Orada bol, ve (o php kendisi nefret etmek moda Sadece gibi) Smarty nefret etmek moda olsa da, büyük bir kütüphane bulunuyor.

'Herkes' kendi php kod html karıştırır neden soruyorsun? Buna verilecek tek cevap Beginnners ve salak bunu olmasıdır. Gerçek dünya php deneyimi olan herkes bir şablon motoru kullanır.

Kimse örnekteki gibi kod her html millere ekler niye soruyorsun varsa, iyi açıktır: bir bakım kabus çünkü. Bir tasarımcı için kod verir ve ona onunla iyi şanslar söyleyeceksin? Eğer elle sayfaları ve kod sayfaları için her html sayfası dönüştürmek olacak?

Ben doğru anlamak Yani, size yerine koduna HTML karıştırmak için karar verdik HTML içine karışık kod kadar olan nefret söylüyorsun? Kodu ve HTML hala karışık - - O şey nasıl geliştirdiğini görmek için başarısız ve başka kimse bunu neden yaptığını için bariz bir açıklama gibi görünüyor PHP yaklaşan az doğal / daha karmaşık bir yolu, bu.

Aslında yerine sadece bir diğer içinde gömülü olduğu oyalandığı HTML kodunu ayıran uygun bir çiftleşmiş sistemi kullanın. Perl için benim tadı paylaşmak beri, HTML :: Şablon veya Template :: Toolkit öneririm, ama zaten PHP-dışı dilleri uygulanabilir seçenek olmadığını söyledi ettik.

Peki, bu insanlar "nefret PHP" teklifle ilgili öfkelendim görünüyor. Ben Favori dilinizi koyarsanız üzgünüm sorusunun amaçlanan ruhu değil.

Sonunda, birkaç kişi tarafından yapılan bazı gerçekten geçerli nokta vardır;

  1. Talihsiz adlandırma kuralı: nesnenin adı olarak HTML öğesinin adını taşıyan bir çan çalar.
  2. Ben Lisp'i yeniden icat ve o da bunun kötü bir parçası değilim.
  3. Bu sadece başka bir şablon sistemi ve önyükleme için bir kötü biridir.

Benim için kabul edilen yanıt troelskn tarafından yayınlanmıştır güzel bir yazı oldu. Ben kendi belge modeli ihtiyaç sonuca içine geldi ve ben onu html varlık isimleri kullanmak kaçınmalıdır. Daha önce de söylediğim gibi, bu bir küçük yan proje; Ben onun yorumlardan var ki makale ve bazı noktalar beni keşfetmek için yeni fikirler verdi.

(Yeniden icat Lisp parçası Hakkında:. Ben Yani orada DOM programlama zevk olduğunu biliyorum tek kişi değilim.)

Yorumlarınız için hepinize teşekkür ederim.

PHP is bir şablon dili. bu nedenle, tüm PHP hayranlarını şablon gibi tasarım kullanarak doğal.

Eğer oraya koymak gibi şeyler bazı LISP kütüphaneler vardır. I LISP dilleri yaklaştığınızda IMHO, bu büyük bir dönüş-off.

Question 261338 Bu bazı colinerarity vardır, ama benim cevap daha tüm bu programlama için yeni php insanlar orada hedeflenen "endişeleri ayrılığı? Nedir ki?" insanlar. (Üzgünüm php kişi, büyük ölçüde bu durumda)

Sen iyi bir perl oyuncu olmak ve ben Perl hala yeni değilim, ama php kokuyor ve ben çok uzun süre kullandım, php yüklü alır html templatey bok oluşturmak için perl kullanabilirsiniz, kesinlikle bir olmak zorunda php üzerinde çalışan Perl bir site yazmak için bir yol.

Üçüncüsü, ben değişkenleri ötesinde büyüten değişiklik yapan bir şey görmek istiyorum.

Sıralama jQuery tarzı dom eşleştirme gibi ama kabartmak, java (gergedan), ya da tüm web browsery şey olmadan.

$page = new Page("FakePage.html"); 
$page->find("div#foobar")->text = "Hahah! I rock" ; 
/* Give All H1's a numeric lead in  */  
foreach( $page->find("h1")->iterator() as $index => $node )
{
        $node->text =  ($index + 1 ) . ". " $node.text;
};
$page->render();

Ben gerçekten güzel yaptım ve çok zor emmek vermedi şey isterim. Muhtemelen alışkanlık tamamen php tarafından sevilmek yapıların benim kullanımına dikkat edin.

Düşler ücretsizdir.

(Bu gerçekten tasarım ve mantık ayıran / tek / sözdizimi, tüm diğer templatey şeyler sadece ardışık programlama dilleri azalan)

Burada ekstra serin bir parçasıdır:

  1. Html santise gerek yok, onun DOM HABERDAR!
  2. Berbat ve editörler% 90 çalışmaz ve üzerinde bir tavuk kanama olmadan kendi üzerinde geçerliliği olamaz garip özel şablon biçimlendirme gerek yok.

Sadece bir şablon dosyası ve PHP modundan dışarı kaçan, söz değil sadece kod estetik için tercihinizi karşılamak için tamamen havai ekler göre biraz daha fazla iş, çünkü başka kimse bunu yapıyor.

Bu Owen önerilen gibi böyle basit bir sistem olarak, ekrandan mantığını ayırmak anlamına gelmez. Ama bunu sevmiyorum sırf uzakta HTML ile karışık php kongre utangaç biraz saçma - bu dil kullanılmak üzere yapılmıştır nasıl.

Benim portalda kullanmak herhangi bir biçimde işlemek için tek bir xls şablonu kullanarak, benim formları geliştirmek için xml, xsl yaklaşımı kullanılarak ediyorum. Başlangıçta bu xls dosyanın doğru formatını bulmak biraz zor oldu, ama o bittikten sonra, o benim formları işlemek için çok kolay oldu. Php Ben sadece bir XML nesnesi oluşturmak zorunda ve render.

Açıkçası, bu durumda ben onlara normal bir şekilde işlemek, ben xls ile işlemek istemiyorum 'özel' şeyler olacak.

Ben bu kütüphaneler geliştirdi neden php kodu ile çok şey karıştırmak sevmiyorum, yani ...

Ben HTML üretmek için lisp kullanarak görülen lezzet kimliği tutarak, aynı nedenlerle çoğu için metal etiket lib hafif yakın geliştirdi.

Burada Bakış / örnek kod xilla_tags

Ben çiftleşmiş sistemleri hakkında duymak istemediğini biliyorum, ama sadece Smarty baktım eğer iyi seçenek kaçırıyorsun. Try Tiny But Strong

Senin gibi ben sadece geliştirici değilim, ama ben TBS kitlesel benim verimlilik ve benim kod dayanıklılığını artırır bulabilirsiniz. Smarty aksine şablonlar bir makro dilini empoze etmez ve tamamen bulunuyor, Dreamweaver ile% 100 uyumlu - şablonları gerçekten ve gerçekten zaman mutlak bir ton kazandırır olarak wysiwyg kalır.

Şablondan ayrı dosyalarda tüm kod yazmak için güçlü olmak biçimlendirilmiş ve standart bir şekilde düzenlenebilir anlamına gelir. Ben her zaman benim kod yapılandırılmıştır nasıl bildiği gibi bakım bir sersem olduğunu.

Ben xajax kütüphaneleri ile TBS kullanmak ve bir tedavi çalışır, ancak tercih kütüphaneleri onunla ne olursa olsun karışımı olabilir - Ben oldukça güzel örneğin Dojo ile çalışan yaşadım ve ben gelecek kadar jQuery bakıyorum.

Ne istediğinizi yapmak php için çok az çerçeveler vardır. Prado veya Yii sahipsiniz. Onlar sadece sistemleri çiftleşmiş değil, tam teşekküllü etiket kütüphaneleri destekler. Ayrıca phpframeworks.com kontrol edebilirsiniz, size orada gereken nedir diğer bazı çerçeve bulabilirsiniz.

Ben de etiket kütüphaneleri ve sunucu tarafı dom manipülasyon desteği ile kendi çerçevesinin geliştirilmesi, ama ben hala bir şey yayınlamadan önce kodu biraz optimize etmek gerekir, bu proje http://players.sourceforge.net altındadır.