nasıl (XHTML) sunum ayırmak ve işlevselliği (PHP kodu) mı?

6 Cevap php

Daha iyi ... Ne sth, özel html render sınıfları yapmak. gibi bu:

class IndexHTML {
    public $doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
    public $title = "<title>MICE</title>"; //title of document
    public $contentType = "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />";
    public $contentStyleType = "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />";
    public $jsSrc = "<script type=\"text/javascript\" src=\"main.js\"></script>"; //your javascript files included
    public $css = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />"; //your css files included

    function html_head(){
        echo $this->doctype."<html><head>";
        echo $this->title,$this->contentType,$this->contentStyleType,$this->jsSrc,$this->css;
        echo "</head>";
        require_once("classes.php"); //require additional needed scripts
    }
}

ya da sadece yazmak, sonra menu.html, footer.html vb (sadece kafa gerekli etiketleri ile) head.html gibi ayrı dosyaları yazmak ve daha iyidir:

class IndexHTML {    
    function html_head(){   
        require_once("head.html");       
    }
}

Ben PHP yeniyim ve şeyler ile ilgili uygun şekilde öğrenmek için çalışın.

EDIT: Ayrı dosyalar bakım için daha iyidir. Ne performansı hakkında?

Tavsiye için teşekkür ederiz.

6 Cevap

Peki bazı Bu katılmıyorum ama bence ne PHP iyi yapan her şeyden önce bir HTML çiftleşmiş motoru ve sınıfları / nesneleri gerçekten sideshow olmasıdır olabilir. Sizin IndexHTML sınıf gerçekten değer bir sürü eklemek değildir. Sen gibi. Yerine sadece onun uğruna bir nesne modeli oluşturmak için çalışırken daha atılmış bazı dinamik kod blokları ve ifadelerle html dosyalarına. Php dosyalarını tedavisinde daha iyiyiz IMHO.

Hiçbir PHP bunu yapmanın "doğru yol", sadece çeşitli kabul "iyi uygulamalar" ve çok vasat ve sadece düz kötü olanları vardır. PHP, size ancak sizin için mantıklı bunu yapmak için güzel bir açık alan verir. Bu belki onun en büyük gücüdür. Ama bu aynı zamanda büyük bir sorumluluk olduğunu. Eğer can ancak sizin gibi bunu sırf seni anlamına gelmez should.

Ben bunu tüm farklı yollar yapmak sayısız projeyi gördüm. Yöntemleri şu anda en-moda merkezi sevk denetleyicisi ile genellikle bir çerçeve kullanarak veri işleme, veri erişimi ve veri sunumu dışarı ayıran içerir. Bunlar dizinleri ve nerede dosyaları bulmak için düzenlemek için nasıl hakkında kendi kuralları var.

Eski bir yöntem, bir sayfa olarak her dosyayı tedavi içeriyordu. Bu dosya bu kurulum veritabanı işleyicileri ve diğer soyutlamaların da dahil olmak üzere çevre, en az birkaç includes, ama aynı zamanda bir sayfanın ortak elemanları oluşturmak için fonksiyonlar tanımlandığı gibidir. Dosya iki yarısı oldu: o ilk yarısında tüm işleme ve erişim yaptım, ve sonra ikinci yarısında çıkışını inşa. Bunun bir varyasyonu bu çıkış için ayrı bir dosya bulunmaktadır gelmiştir. IME, bu PHP ruhuna daha yakın olduğunu ve sıfırdan iş yapmak daha kolaydır.

O çok daha okunabilir ve bakımı kod verir çünkü, ayrı bu durumda içerir kullanmak daha iyidir. Genel olarak ben oldukça güçlü bu nedenle, PHP ile HTML çıktısı echo ifadeleri kullanarak karşı değilim.

Ben PHP kodu ile hiçbir şey ama benim kendi küçük denetleyicisi yapmak. Sonra sonunda, benim mantık bağlı olarak, uygun görünümü "include" vb myController.myAction.htm veya myController.form.htm: Ben o zaman benim "manzaralı" bir html-include dizin var onun gibi bir şey adlandırılmış Benim kontrol. Bu onları benim veritabanı işlemleri ve iş mantığı herhangi sonra kontrolör kurmak benim tüm değişkenlerin erişmesini sağlar.

Bu konuda benim en sevdiğim şey, çok basit ve esneklik ton izin vermesidir. URL'leri yeniden yazmak ve denetleyicileri ve görüşlerini düzenlemek için uygun bir adlandırma kuralı kullanmak durumunda da güzel olabilir.

Smarty şablonları kullanın

Ben PHP için yeni değilim, ama ben yıllardır Delphi programlama oldum. Delphi olduğu gibi, mantık ve sunum birleştiren kolay yaşatılabilir PHP kodu geliştirmek mümkün olmamalıdır hiçbir neden yok. Ben (örneğin şablon bir tür olarak gömülü değişken isimleri ile HTML olarak geçen) geçen parametre ile bağlı modüler fonksiyonel elemanları şeklinde kod yeniden kullanılabilirliği için tercih eğilimindedir. Ayrıca, bazen tekerleği yeniden icat orijinal tekerlek nasıl çalıştığı hakkında bilgi edinmek için en iyi yoldur, bu nedenle yerine Smarty gibi üçüncü parti templating yazılımı kullanarak, Smarty ilham ile kendi şablon sistemi geliştirmeye çalışın.