Ben listenizde sorunların çoğunu geçirdiği, bu yüzden bana ben hallederim nasıl spec izin verdim. Ben de bağımlı OOP ve (doğru yapılırsa) henüz zarif nesne teknikleri son derece esnek ve güçlü buluyorum duyuyorum.
MVC - Evet, eller aşağı, MVC web uygulamaları için bir standarttır. Bu iyi belgelenmiş ve anlaşılabilir modelidir. Ayrıca, bu sınıf düzeyinde yapar, yani, o ayrı şeyler tutar ne cepten uygulama düzeyinde yapar. MVC güzel ek Intercepting Filter modelidir. Öncesi ve sonrası işleme isteği ve yanıtı için filtreler eklemek için yardımcı olur. Ortak kullanım istekleri, kıyaslama vb erişim denetimi, önbelleğe alma, oturum açıyor
OOP representation veritabanı tabloları / satır da mümkündür. I günlük olarak DAO ya da ActiveRecord kullanın. ORM sorunlara yönelik bir diğer yaklaşım Row Data Gateway ve Table Data Gateway olduğunu. İşte example implementation TDG ArrayAccess
arabirimini kullanan bulunuyor.
HTML templates, aynı zamanda bir nesne olarak temsil edilebilir. Ben Smarty şablon motoru ile birlikte Görüntüle nesneleri kullanın. Ben bu teknik son derece esnek, hızlı ve kullanımı kolay bulacaksınız. Görüşünü temsil Object __set
yöntem çok her özellik Smarty şablon içine yayılır alır uygulamalıdır. Ayrıca __toString
yöntemi yuvalama görüşlerini desteklemek için uygulanmalıdır. Örneğe bakın:
$s = new View();
$s->template = 'view/status-bar.tpl';
$s->username = "John Doe";
$page = new View();
$page->template = 'view/page.tpl';
$page->statusBar = $s;
echo $page;
İçeriği view/status-bar.tpl
:
<div id="status-bar"> Hello {$username} </div>
İçeriği view/page.tpl
:
<html>
<head>....</head>
<body>
<ul id="main-menu">.....</ul>
{$statusBar}
... rest of the page ...
</body>
</html>
Sadece echo $page
ve iç görünümü (durum çubuğu) gerek bu şekilde otomatik olarak HTML dönüşecek. complete implementation here bak. Bu arada, HTML altbilgi ve üstbilgi ile döndü görünümü sarabileceğiniz Filtreler Intercepting birini kullanarak, böylece denetleyicisi tam sayfa döndürme hakkında endişelenmenize gerek yok.
Ajax kullanmak veya isteyip soru da tasarım zaman önemli olmamalı. Çerçeve doğal Ajax desteklemek için yeterince esnek olmalıdır.
Form validation Kesinlikle OO şekilde yapılabilir bir şeydir. Kullanarak karmaşık doğrulayıcı nesne oluşturmak Composite pattern. Kompozit doğrulayıcı form alanları ve atanan basit doğrulayıcılarıyla yineleme ve size Evet / Hayır cevabını vermelidir. Eğer formu güncelleme böylece O da (Ajax veya sayfayı yeniden yoluyla) hata iletileri dönmelidir.
Başka bir kullanışlı unsur kullanıcı arayüzü uygun olması için db verileri değiştirmek için otomatik çeviri sınıftır. Örneğin, sen sadece başka içine bir atanamıyor boş dize veya "on"
_POST veya _GET dizide sonuçları HTML Boole devlet ve kullanımı onay kutusunu temsil db INT (1) alan varsa. Veri Görünümü veya db için uygun olması değiştirir çeviri hizmeti olan veri sanitasyon temiz bir yoludur. Ayrıca, çeviri sınıfının karmaşıklığı bile (HTML içine the one converting Wiki syntax gibi) çok karmaşık dönüşümler sırasında çöp senin denetleyicisi kod yok.
Ayrıca i18n sorunlar nesne yönelimli teknikleri kullanılarak çözülebilir. Ben lokalize iletileri almak için __
fonksiyonunu (çift çizgi) kullanarak gibi. Yerine bir arama yapmak ve mesaj dönen fonksiyonu bana daha sonra arama için Proxy nesne ve ön kayıtları mesajı verir. Vekil nesne görüntüle içine itilir VE Görünümü HTML dönüştürülür ediliyor kez, i18n backend tüm önceden kayıtlı mesajları için görünüyor. Döndüren tek bir sorgu çalıştırdığınızda bu şekilde tüm iletileri istedi.
Access controll konular İş Delege desen kullanılarak ele alınabilir. Benim other Stackoverflow answer olarak nitelendirdi.
Tam odaklı nesne olduğu mevcut kodu ile oynamak isterim Son olarak, Tigermouse framework bakmak alır. Işlerin nasıl anlamanıza yardımcı olabilir sayfasında bazı UML diyagramlar vardır. Ben bunun üzerinde çalışmak için daha fazla zaman var gibi, bu projenin daha da geliştirilmesi devralmak için çekinmeyin.
Güzel bir hack var!