Web uygulamaları ve N-katmanlı N-katmanlı kavramı JSON ve AJAX veya Flash ve Xmlrpc yaygın kabulü ile genişletti çünkü çoğunlukla, ilginç. Bu chart on Webopedia de bu ifade bir şaşırtma mavi çizgi görüntüler. Özetlemek gerekirse: iş, erişgeç ve sunum mantığı sunucusunda var olamazdı - ama bazı durumlarda, sağ tarayıcıda. N-katmanlı niyeti, ancak, separability. Eğer UI veya veritabanı üzerinden değiştirmek veya diğer UI'larda eklemeniz gerekiyorsa, size iş mantığı etkileyen olmamalıdır. HTML ve CSS Flex için atılır ve MySQL Oracle için dışarı değiştirilir günü bekliyorlar - Ve bu API belirleyecek budur.
Bu belirlenen gereksinimleri olduğunu, ve ben kullandığım bazı web uygulamaları, N-katmanlı varyasyonları aynı anda kullanılmaktadır. Örneğin LyrisHQ (bir e-posta ASP) alın. Onlar bir müşteri web uygulaması var. Son zamanlarda, onların Flash tabanlı uygulama iterek baktı var. Bu açıkça tarayıcıya veri hakkının bir çok nakliye ve Flash UI çoğaltılamaz iş mantığı biraz muhtemelen vardır. Bir farklı (ve üst üste binmek) gereksinimleri için gerekli olan ya da bu yana Bununla birlikte, her iki uygulamaları korumak gerekir.
En yaygın PHP uygulamaları tarayıcıya çok biçimlendirilmemiş veri nakliye dikkate değildir. Eğer olsaydı, bu sizin API'leri tasarlamak istiyorum nasıl çok hızlı bir şekilde sizi bilgilendirmek olacaktır. Çok büyük olasılıkla, size PHP sunum şablonları kullanılan benzer bir iç kontrolör sınıfına ek olarak ... XMLRPC, DİNLENME, veya SABUN konuşabilirsin kontrolörleri isterim. Bu kesinlikle basit bir web giriş sayfası için, bir LoginController sınıfa konuştuk giriş formu için bir PHP şablon var anlamına gelirdi. Bir XML arayüzü aynı şekilde aynı LoginController sınıfını kullanabilirsiniz. Eğer bir Ajax isteği içine SQL yazmak için çılgın olacağını zannedebilir gibi ... Eğer kesinlikle sunum şablonları içine yazma sorguları kaçınarak olacaktır.
Genellikle veritabanı back-end markaları geçmek için bir gereklilik yoktur asla çünkü iş katmanları, daha fazla veya daha az sıkı olabilir. Sıkı bir N-katmanlı tasarımda, nasıl iş nesneleri İş katmanı yeniden olmadan MS SQL MySQL geçiş olabilir gibi olur eğer sizin veritabanına konuşmak istiyorum. Bazen bu her tablo (Tablo Geçidi) için nesneleri modelleme yapılır, her bir satır (aktif rekor), her katılmak, ya da her bir işlem. PDO veya PHP-ADO gibi bir şey yararlıdır, ama tam izolasyonu için yetersiz olduğu yer burası. Hibernate gibi Java ORM / Kalıcılık katmanlar genellikle bir nesne Query Language (OQL) sağlayarak, izolasyon, bu tür daha iyi göstermektedir.
Kendim, ben şu anda bir MS-SQL birine üzerinde MySQL tabanlı PHP uygulaması bir arka-uç geçişi taahhüt ediyorum. Uygulama sadece hiç doğrudan SQL sorguları kullandı. Bir sınıfta sorguları bir dizi çekmek ve onları soyutlayarak, ya da sınıflara ve umarım iş mantığı değiştirerek değil ya nasıl seçerek düşünün. En azından, tüm SQL dolaylı aramaları yapmak isteyeceksiniz. (S.O. post on PHP ORM.)
Ve nihayet, OOP hakkında soruya: ihtiyaçlarınızı karşılamak için nasıl kullanmak gerekir. Benim kişisel tekniği top çok yakında bir sınıf içine Refactor ve bir şablon olacak, haddeleme almak için doğru bir kaç dakika için bir PHP sunum şablonu mantığı ile başlamaktır. Ben ortak fikirler varsa, ben DNRY ilkesini korumak çabası, paylaşılan sınıflara rutinleri patlak. (A S.O. post on that here. cepten N-katmanlı tasarımı için temel bir gereklilik değildir. DNRY sürelerin Genellikle. Tho, sıçramalı kodunuzu tutmak için çok önemlidir ve kapsamı-shift bir API yok. Ne olsun sizin kadar Refactor devam etmek gerekir. ben cepten sizi oraya yardımcı olacaktır eminim.