Benim php mimarisi sağlam?

5 Cevap php

Ben sağlam bir sunucu tarafı mimari tasarım için çalışıyoruz ve bu ile geldi ediyorum:

http://www.monsterup.com/image.php?url=upload/1235488072.jpg

Kullanıcı hakları kontrol edilir process.php adında tek bir sunucu dosyası, istemci tarafında sadece konuşur; ve eylem sevk ediliyor burada. Iş sınıfları daha sonra iş mantığını işlemek ve veri doğrulama gerçekleştirmek. Hepsi db işlemleri gerçekleştiren bir DataAccessObject sınıfı içeren var.

Eğer böyle bir mimari olabilir farklı bir zayıf noktası olabilir? Bildiğim kadarıyla güvenlik, esneklik, yaygınlığı gibi ...?

5 Cevap

Sizin mimarisi mükemmel değildir. Bu mükemmel olacak asla. Hiç. Mükemmel olmak imkansız. Bu, genel olarak uygulama geliştirme, programlama ve dünyanın doğasıdır. Bir gereklilik bir özellik eklemek için gelip, ya da iş mantığını değiştirmek ve bu mimari dönmek ve söylerim olacak "Ben bu korkunç dünyada ne düşünüyordum." (Hopefully. .. aksi takdirde muhtemelen yeni bir şey öğrenme değil!)

Hedeflerinizi bir envanterini çıkarmak, bu olmalıdır:

Bu mimari mükemmel

veya onun yerine:

Ben ihtiyaç ve beni için get stuff done sağlayan bu mimari fonksiyonları

Bu getirebileceği bir yolu roll-your-kendi bile böyle Smarty gibi bir şablon motoru kullanarak, ya da, add a view layer etmektir. Eylem sınıfları şablonu kendisini görüntülemek sonra, verileri hazırlamak şablona atamak olacaktır.

Yani kolay korumak için yapım, separate your business logic from your HTML için size yardımcı olacaktır.

Bu uygulama tasarımı için ortak bir yoludur.

Yapabileceğiniz başka bir şey have another class handle the action delegation. Gerçekten olsa, uygulamanın karmaşıklığına bağlıdır.

Kitap PHP Objects, Patterns and Practice size uygulama mimarisi üzerinde gerçek bir bacak-up verebilir.

Ben bir kaç şey görüyorum.

(Ben sık sık kullanın ve ben gerçekten bu gün şüpheler yaşıyorum, ama sapmak) Smarty hakkında emin değilim ama Birincisi, ben, bazı tür bir görünümü katman eklemek gerekir ki başkaları ile katılıyorum. Nokta bunu değiştirmek kolaydır böylece bir şablon yere HTML ayırmak gerekir edilir. AJAX bir çok kullanırsanız o nokta tereddüt etmez. AJAX hala Yani düzen işleme kodu ayrılması gerektiğini, vb sayfa civarında divs koymak için (genellikle) gerektirir.

Ben orada atardı ikinci şey veri modeli konularda karmaşıklığı. Bu varolan, ya da oldukça düz, db model üzerinde basit bir CRUD uygulaması ise, muhtemelen bu db erişim sınıfları ile gayet iyi. Ama, senin modeli herhangi bir şekilde hiyerarşileri veya polimorfik ile, daha karmaşık alır dakika, aşağı kıracak. Bazı tür daha sağlam bir ORM gerekir.

Sizin "kontrolörü / memuru" metodoloji ses gibi görünüyor. > Kodu dönüşümler, yönetmek ve büyütmek için önbelleğe almayı gerektirecek bir ağrı - switch ifadeleri URL her türlü gereksinimini ortadan kaldırır.

Bu benim 0,02 $ var

Güvenlik açısından sınıf ve eylem sonrası değişkenleri dan geliyor ve never kullanıcıdan gelen şey güven gerektiğini, çünkü bu tehlikeli olabilir. Assumingly sınıf / eylem bu gibi bir şey olacaktır:

class1
{
  action1.1
  action1.2
  ...
  action1.N
}

class2
{
   action2.1
   action2.2
   ...
   action2.N
}

Uygun bir sınıf için bir eylem eşleşmiyor nerede bir saldırganın olarak bakmak benim ilk yer bir devlet olarak almak olacaktır. Ben yerine action1.1 bir action2.1 Class1 göndermek için çalışacağını söyledi.

Bunu dedi, benim varsayım zaten doğrulama çeşit var ve bu yüzden bu durum olmazdı olmasıdır. Hangi benim özgün mesaja beni götürür: senin mimarisi sizin için çalışıyorsa, o zaman sizin için çalışıyor. Hakkında soruyorsun şeyler bir göz atın: güvenlik, esneklik, genişletilebilirlik ve onlara kendinizi değerlendirmek. Kendi kusurlarını bulun. Güvenlik / esneklik / diğer konuda okumak için değerlendirmek için nasıl bilmiyorsanız, bu uygulama ve uygulamak.

Hata yapma ve sonra da onlardan öğrenerek daha iyi bir geliştirici olmak gerekir (füze rehberlik yazılımı hariç, sadece bir tane denemek olsun.)

Başkaları bu yana bana iyi bir mimarlık için çeşitli kriterlere odaklanalım bir görünüm katmanı, vb ekleme gibi çeşitli değişiklikler önerdi:

  1. Geliştirilebilirlik: Genellikle, daha soyut ve gevşek bağlı mimarisi, daha çok uzayabilir olduğunu. Bu diğerleri bir görünüm katman kullanmak tavsiye var tam olarak neden olan olur her sınıf için sunum katmanı şablonlar üzerinden soyut: kendi dosyasına eylem çifti.

  2. İdame: Bu genişletilebilirlik ile el-ele gider. Genellikle, daha genişletilebilir mimarisi (bu her zaman böyle değildir, çünkü tuz tahıl ile bu almak), daha sürdürülebilir o olduğunu. Senin modeli mantık katmanının altındaki bir model katmanı eklemeyi düşünün. Bu modeli iş mantığı, veri erişim mantığı takas yardımcı olacaktır.

  3. Güvenlik: Eğer doøurmuûtur mimarisine olumsuz gerçekten güvenlik testleri yatırım gerekiyor olmasıdır. Tüm yönlendirme / yönlendirme kodu process.php olduğu için, bu dosya, bir çok sorumluluk vardır ve bunun için herhangi bir değişiklik olası bir güvenlik boşluğu neden olabilir. Bu mutlaka yanlış değildir, sadece risklerin farkında olmak gerekir.

  4. Ölçeklenebilirlik: Sizin mimarisi dengeli ve çok ölçeklenebilir görünüyor. Eğer varsa bu yana sınıf tarafından bozuldu: eylemler, performansı artırmak için herhangi bir katman önbelleklemeyi ekleyebilirsiniz. Bir ek veri erişim modeli katmanı ekleyerek ayrıca katmanında veritabanı yakın önbelleğe yardımcı olacaktır.

Son olarak, her mimarisi ile deneme ve hata yapmaya korkmayın. MVC iyi bir anlayışa sahip gibi görünüyor zaten. Architecting daha iyi almak için tek yolu uygulamak ve 'gerçek dünya' test etmektir.