Özel php şablon motoru: ben doğru yolda nihayet mıyım?

3 Cevap php

Ben aslında ben bir soruyu kendime soruyorum denemek düşündüm cevabı biliyorum php etiketli sorulara cevap için geç gösterilmesini tutmak beri.

Ben i görüşlerini sormak düşündüm çok uzun ve pek çok kez php özel bir şablon motoru çok komple yeniden yazar üzerinde çalışıyoruz.

Kısacası, bu şimdiye kadar hayata geçirdik en önemli parçasıdır:

  1. Herhangi bir http isteği handler.php yönlendirilir
  2. İstenen URL tabanlı bir denetleyici örneği ve denetleyici bir yöntemi denir.
  3. The controller method must return an IView compatible class instance ( IView defines a Render() method)
    1. Motor şablonu biter, her ad için bazı xpath yapar 'serverside' sprintf('//%s:*[@runat="server"]', $namespaceprefix )
    2. Her bulundu etiketi için, $tag.localName ile tespit php sınıfını arar ve bir başlatır ve özgün şablonuna ekler.
    3. Ekli kez düzgün başlatılamadı, böylece özgün şablon düğüm 'ServerTag' beslenir
    4. tam tam IView uyumlu örnek kontrol yönteminde geçici bir değişkene atanır.
  4. Kontrolör bazı şık xpath DOM değişiklik yapar görünümüne Model sınıf iter verileri sorar.
  5. Kontrolör bu işler main() işleyicisi, tamamen dolu bir görünümünü verir.

Ben xml benim şablonu dayandırıyor. basit bir şablon şu gibi görünüyor:

<html xmlns="http://www.w3.org/1999/xhtml" 
  xmlns:red="http://www.theredhead.nl/serverside">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title will be filed by the View depending on the Controller</title>
    <link rel="stylesheet" type="text/css" href="/Stylesheet/Get/Main/" />
</head>
<body>
    <!-- the entire body may be reset by the view using it, using XPath and DOM functions -->
    <!-- Usually the PageHeader and PageFooter would be put back after clearing the body  -->
    <div id="PageHeader">
        <img src="/Image/Get/theredhead_dot_nl.png" alt="Site Logo" />
    </div>
    <h1>www.theredhead.nl :: Test Template</h1>
    <p>
        Lorum ipsum dolar sit amet. blah blah blah yackadee schmackadee.
    </p>

    <div id="PageFooter">
        Built by
        <br />
        <red:UserProfileLink runat="server" Username="kris" />
    </div>
</body>
</html>

Akımda, (kırık girinti dahil) bu çıkışları:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:red="http://www.theredhead.nl/serverside">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Welcome to my site</title>
    <link rel="stylesheet" type="text/css" href="/Stylesheet/Get/Main/"/>
    <link rel="stylesheet" type="text/css" href="/Stylesheet/Get/Custom/"/>
    <link rel="stylesheet" type="text/css" href="/Stylesheet/Get/Profile/"/>
</head>
<body>
    <!-- the entire body may be reset by the view using it, using XPath and DOM functions -->
    <!-- Usually the PageHeader and PageFooter would be put back after clearing the body  -->
    <div id="PageHeader">
        <img src="/Image/Get/theredhead_dot_nl.png" alt="Site Logo"/>
    </div>
    <h1>www.theredhead.nl :: ModelViewController</h1>
    <p>
        Lorum ipsum dolar sit amet. blah blah blah yackadee schmackadee.
    </p>

    <div id="PageFooter">
        Built by
        <br/>
        <div><div xmlns:profile="http://www.theredhead.nl/profile" class="ProfileBadge" style="font-size : .8em;">
<a style="text-decoration : none; border: none;" href="/Profile/View/kris">
    <img style="float : left;" src="http://www.gravatar.com/avatar/5beeab66d6fe021cbd4daa041330cc86?d=identicon&amp;s=32&amp;r=pg" alt="Gravatar"/>
    &#xA0;Kris
</a>
<br/>
<small>
&#xA0;Rep:&#xA0;1
</small>
</div></div>
    </div>
</body>
</html>
  • Ben burada sadece buzdağının ucu dokundu ettik ve evet, ben kullanılmayan xmlns sıyırma olacaktır ben işlevselliği ile mutluyum kez çıktı niteliklerini
  • benim MVC ve çekirdek çerçeveler sadece üzerinde 200 sınıfları şu anda var
  • Ben de benzer şeyler yapabilir mevcut çözümleri vardır farkındayım, ama benim kendi inşa etmek istiyorum.

Yani büyük soru şu: Do you have any input on must-have functionality?

P.S. Herkes tam kaynak kodu ile ilgilenen varsa, ben makul geliştirici kullanılabilirlik düzeyleri ulaştığınızda, benim sitede sağlayacağınıza bir yorum bırakın lütfen.

3 Cevap

Neden sadece çiftleşmiş sistemi olarak PHP kullanmayın. PHP IS şablon sistemi.

What is wrong with just dumping <?php=$variable;?> in an HTML template? You can use foreach loops, etc. Just make sure that you run it from within a scope that cannot access any variables you do not want.

Benim Java / Struts kabuslar beri böyle overcomplicated şablon sistemleri için gerçekten derin kurdu nefret var. Size gereken sadece tek bir şeyi değiştirmek için önce ad alanlarında, XPath, özel ad alanları ve tüm bu şeyler içine dalmak zorunda.

İşte çiftleşmiş motorları ile ilgili bir makale var: http://massassi.com/php/articles/template_engines/

Sen yanlış yapıyorsun.

Sadece Phil Reif aslında okumak and soru ve niyetini anladım gibi geliyor bana.

Php is şablonu motor ve o çok gerçekleri görmezden ve vardır bulunuyor iddia bu insanlar sağlam çerçeveler önemli gerçek dünyadan kendilerini kör var.

Yani, puan kadar (zaten uygulanmakta edilmemiş olması) özellikleri vardır sahip olmalıdır:

  1. Listeler. I <asp:DataGrid> benzer kontrollerde bu işleme olacak
  2. Doğrulama. Doğrulama kontrolleri ile ele alınacaktır. Düzenli ifadeler, karşılaştırmalar vb
  3. Çıktı html 5 inç sinked en az kadar zorla XHTML 1.0 olduğunu
  4. (Yerine kod xml şablonlara dayalı) Kompozit özel kontroller
  5. inline php kodu ... Onu düşünüyorum, <?php ... ?> geçerli bir xml DOMProcessingInstruction düğüm, ama hakimler kararsızdır.
  6. Yapılandırılabilir küresel istisna işleme.

Bir göz atın ve belki bazı zekice fikirler bana geri alabilirsiniz böylece çevrimiçi ilk taslaklarını kurdum.

Arada şeyleri ben ve önümüzdeki birkaç gün çalışan formları olacak bak. Şu anda bir tasarım sadece bir ilk taslak (kod ve stil bilge hem de) bulunuyor

Hala burada biraz daha giriş için umut, kontrollerin ne tür insanların kullanımı ve sevgi mi? (Herhangi bir çerçeve / dilden)

Kris