PHP5 (Django? Gibi) Şablon Kalıtım nasıl uygulamaya

8 Cevap php

Varolan iyi bir örnek var mı, ya da nasıl bir yaklaşım PHP5'ta "Şablon Inheritance" destekler (MVC düşünme) temel bir şablon sistemi oluşturmak gerekir?

Ben Şablon Kalıtım, şablonları Django (web geliştirme için bir Python çerçeve) bakın olarak tanımlamak ne bir örnek için dokümantasyon: http://docs.djangoproject.com/en/dev/topics/templates/#id1

Mutlaka bir gereklilik olmasa da özellikle, PHP kendisi "şablon dili" olma fikrini seviyorum.

"Şablon Miras" uygulamak mevcut çözümleri listeleme ise, 'halk oylamasıyla' yararına, bireysel sistemleri gibi cevaplar oluşturmak için deneyin.

8 Cevap

Maalesef eski bir iplik kazıp, ama ben sadece yerli PHP şablon devralmayı yapan bir kütüphane yayınlandı. Çok Django esinlenerek. Bunu kontrol ve bana ne düşündüğünüzü bildirin:

"PHP Şablon Inheritance"

http://arshaw.com/phpti/

hmm .... Soulmerge adlı verdi cevabı şablon miras ile ilgisi yoktur. Ben kavramı ile jpic en konuların ne merak ediyorum, ama onun linki sadece çikolata reklamları ile bir sayfaya gider. Şahsen, ben şablon miras harika olduğunu düşünüyorum, ve bu herkes bu konuda şikayetçi görünce benim ilk kez.

phpti bir seçenek eski işaret, ama benim için biraz çirkin görünüyor.

Sen şablon mirasını destekler, ve (php dahil) birçok dilde uygulamaları vardır bıyığı (mustache.github.com), düşünebilirsiniz. PHP bıyık şablonlarını kullanmak için, muhtemelen bıyık dosyaları okumak ve bunları işlemek için bir tür denetleyici yazmak isterim.

Soulmerge anlaşılacağı gibi yapın.

BTW, şablon miras aslında reversed dinamik içerme, ben bunun (ağrı) görmek yoludur: Bu şablon dahil edilmelidir şablona dahil etmek için hangi dosyayı kontrol ilgili değil, hangi dosyayı kontrol etmektir + içine aşırı o dosyanın hangi parçalar.

Eğer gerçekten istiyorsanız gory details about template inheritance:

  • neden, berbat
  • (Eğer zeka ve deneyim meydan istiyorum yani) yine de nasıl uygulanacağı,
  • nasıl have to kullandığınız zaman onunla daha az emmek,

Yine, güzel, üst ve çilek üzerinde bir şeker ile seksi lütfen üstüne bir şeker, oldukça lütfen lütfen lütfen: Eğer bir parçası olarak ie. kaynak şablonları (açmak niyetinde olmadığını do not bunu şey) tekrar kullanılabilir olması için ment.

Eğer Cevabınız EVET, sınıf mirası nasıl çalıştığını aşina varsayarsak, PHP bunu destekler. Django şey overkill olabilir, ama ben zaten bunu yapmak için nasıl gerçek hızlı sizi denemek ve doldururuz.

Not: Ben burada bir denetleyici kullanarak içine gitmiyorum. Sayfa bir blog ise Açıkçası, bir blogpage nesne yerine sadece normal bir sayfa oluşturmak için gidiyoruz. AYRICA, ben senin için sıfırdan bu kadar yazdı, bu yüzden hiçbir garanti çalışıyor .. ama umarım bu size bazı fikirler verecektir.

<?php
class Page
{

    protected $content_main; // Your main page content.
    protected $content_leftbar; // Your left sidebar content.
    protected $content_title; // Your content title.
    protected $template; // Template data.

    Function getTemplate() {
    	// Logic for determining the template to be used in here.
    	// Let's say it returns the location of a cached version of the template.
            return $template_file_path;
    }

    Function populateContentBlocks() {
    	// This populates the $content_BLOCK variables with data using some default
    	// logic you have for determining where to grab that data from.
    }

    Function loadPage() {

    	// Populates variables.
    	$this->populateContentBlocks();

            // Fetches template
    	include( $this->getTemplate() );
    }


} // END class


Class blogPage extends Page {
    Function getTemplate() {
    	// Logic for determining the template to be used in here.
    	// Let's say it returns the location of a cached version of the template.
    	// OVERRIDE THE DEFAULT TEMPLATE LOGIC OF THE PAGE WITH WHAT IS RELEVENT TO
                // BLOGPAGE.
    }
}
?>

Template File Example:

<html>
  <head>
    <title><?php echo $this->content_title; ?></title>
  </head> 

  <body>
      <div class="sidebar"><?php echo $this->content_sidebar; ?></div>
      <div class="mainContent"><?php echo $this->content_main; ?></div>
  </body>
</html>

PHP Şablon Kalıtım iyi bir alternatif gibi görünüyor. Aşağıdaki web sitesinden açıklaması:

Şablon Miras bir site için yeniden HTML düzenleri yapmak için son derece yararlı bir tekniktir. Bu çok daha esnek (bir başlık ve altbilgi dosyası gibi) bir sayfa ortak unsurların "dahil" gibi alternatif teknikler, daha hızlıdır.

Kavramı en önemlisi Django şablon motoru, bir süre için yaklaşık edilmiş. Diğer kütüphanelerden farklı olarak, PHP Şablon Kalıtım düz PHP her şeyi yazabilirsiniz. Başka bir şablon dili öğrenmek gerek yoktur.

Daha fazla bakınız: http://phpti.com/

Büyük bir bileşen var, "Redstart Templating" çok güçlü bir şekilde php şablonları Kalıtım destekler ve tüm şablonları saf html ve php yazılmış artı uzayabilen, daha yeni eklentileri ve lapa oluşturabilirsiniz

Eğer http://phpbeat.com/doc/templating burada proje hakkında daha fazla bilgi edinebilirsiniz

Bir şablon motoru i üzerinde çalışıyorum

(Php gibi sözdizimi destekler ve / şablon direktifleri ve ayrıca şablon inherittance çalışan dahil)

Aynı formatta PHP, istemci tarafı js ve nodejs Destekler hem

https://github.com/foo123/Contemplate

Puja PHP için bir Django gibi şablon motorudur http://www.phpclasses.org/package/8283-PHP-Template-engine-that-compiles-templates-into-PHP.html. Ayrıca, şablon sözdizimini doğrulamak destekler.