PHP şablonları, ve bir var uygulamayı bildirmek için en iyi yolu nedir?

4 Cevap php

Ben CodeIgniter kullanıyorum, ve ben kullanımı son derece basit şeyleri tutmak istediğiniz gibi muhtemelen kendi şablon kütüphane kullanacağız. Şablon değişkenler için içerik veritabanından gelecektir, ama ben iş yöneticileri içerik alanları mevcuttur bilmek istiyorum. Temelde parametrelerin isimleri belirli bir şablon seçtiğinizde. Wordpress PHP dosyası bir şablon sistemini bilgilendirmek için bir sayfa şablonu içinde yorum kullanır oysa Örneğin, Joomla, her alanını tanımlayan bir ekstra XML dosyası kullanır. Eğer alanları bulmak için PHP dosyası ayrıştırmak zorunda değilsiniz, çünkü ben Joomla yaklaşım gibi, ama her şablonu ile ilişkili ekstra bir XML dosyası yok çünkü ben Wordpress yaklaşım gibi. Ben özlüyorum diğer yaklaşımlar var mı?

4 Cevap

Ben güzel yolu şablon ayrıştırıcı sınıfına küçük kesmek eklemek olacağını düşünüyorum. Kod sistemi / kütüphaneleri / Parser.php oldukça okunaklı ve temiz görünüyor. Sen değişkenleri takip için kullanılan bu sınıfın bir kanca eklemek olabilir. Eğer çalışırsa ben, bilmiyorum, ama burada bir parçacık bulunuyor:

class CI_Parser {
    var $varCallback;
    function setVarCallback($callbackFunction) {
        $this->varCallback = $callbackFunction;
    }
    ...
    function _parse_single(...) {
        $callback = $this->varCallback;
        $callback($key);
    }
...

//Somewhere in your code
function storeVarName($variableName) {
    // Persist the variable name wherever you want here
}
$this->parser->setVarCallback('storeVarName');

Siz denetleyicisi doğrudan yapabilirsiniz:

// in the controller
print_r($data);
$this->load->view("main", $data);

: Ya da biraz daha ilkel, ama şablonda array değişken bir PHP (veya object) geçebildiği

// in the controller
$data = array();
$data["namespace"] = array(
    "title" => "My website",
    "posts" => array("hi", "something else")
);
$this->load->view("main", $data);

Iş yöneticileri kullanmak tam olarak ne olduğunu anlayabilmek ve ardından görünümünde, print_r namespace mevcut tüm değişkenler göstermek için bir bayrak var.

// in the view
if(isset($namespace["showAllVars"])) print_r($namespace);

(Işiniz yöneticiler o kadar yükleme sadece zaman) PHP dosyası üzerinde token_get_all diyoruz ve bunun çıkışını ayrıştırmak için bir seçenek olacaktır.

En iyi yaklaşım, benim görüşüme göre, (böyle bir veritabanı tablosu olarak veya ayrı bir dosya) başka bir yerde değişken tanımları tutmaktır. Bu test (yani, bir programcı sadece bir etiketi kaldırmak olamaz ve o gitti) ve emin şeyler hala zaman içinde uygulama geliştirme ile hareket olarak çalışan yapma ile yardımcı olacaktır.

Diğer bir avantajı uygulama mantığı çiftleşmiş motoru bağımsız olmasıdır.

Eğer çok fazla trafik bekliyoruz eğer bir yan not, yerine smarty kullanmayı düşünebilirsiniz. Biz etrafında çiftleşmiş motorlarının çoğu kapsamlı testler yaptık ve çokbilmiş hızlı.