PHP Class heirarchy Organize Best Way

2 Cevap php

Benim projelerin çoğu için kullanıyorum biraz ilkel bir çerçeve var, ama genel bir tasarım sorunu henüz atlatmanın mümkün olmamıştır akla geldi. Belirli bir uygulama için, ben çerçevenin yapısından uygulamaya özel sınıf yapısını ayırmak gerekir, ya da çerçeve değil, böyle kötü bir şey üstüne buliding mi?

Örneğin, ben bir taban Controller sınıfından bir çerçeve vardı ve benim uygulama belirli bir parçası için genişletilmiş söylüyorlar. Hangi düzenleme en mantıklı ve neden?

Class Structure A:

  • Sezgisel, ayıklarken kaynak dosyaları bulmak kolay.
  • Dosya adlandırma / dizin yapısı sınıf hiyerarşi aynalar.
- Framework_Control                 "Framework\Control.php"
   - Framework_Control_Index        "Framework\Control\Index.php"
   - Framework_Control_Home         "Framework\Control\Home.php"
   - Framework_Control_Contact      "Framework\Control\Contact.php"
   - Framework_Control_About        "Framework\Control\About.php"

Class Structure B:

  • Çerçeve / güncelleştirmenin yerini kolayca modüler ve tutar.
  • Dizin yapısına bazı karmaşıklığı ekler, dizin / dosya adlandırma artık sınıfını aşağıdaki hiyerarşi her zaman.
- Framework_Control                 "Framework\Control.php"
   - Application_Control_Index      "Application\Control\Index.php"
   - Application_Control_Home       "Application\Control\Home.php"
   - Application_Control_Contact    "Application\Control\Contact.php"
   - Application_Control_About      "Application\Control\About.php"

Ben kişisel tercihinize aşağı gelip gidiyor genel biliyorum, ama ben gitmek için hangi yolu karar vermeden önce tüm artılarını ve eksilerini tartmak emin olmak istiyorum. Gerçekten gerçek bir hiyerarşi olarak sınıf adlandırma ve dizin yapısına aşağı gelir her iki durumda da aynı kalacaktır.

2 Cevap

Ne gerçekten aşağı gelir ne Application XYZ Framework \ Control.php güncellemek ne yapacağız olduğunu. Geri Uygulama ABC gitmek ve aynı değişikliği yapmak için gidiyoruz? Ne kritik bir hata varsa?

Projelerin tüm Düzeltilebilirlik için ben ikinci seçeneği ile gitmek istiyorum.

Ben iki farklı kategoride, birden çok site genelinde kullanılan ve herhangi tek tek ve yerli bağımlılıkları ya da üzerinde çalıştığınız özel site yerli kod yerel değil dış bağımlılıkları veya kod kaynak kodunu görüntülemek öneririm .

Çerçeve / Control.php büyük bir dış bağımlılık parçasıdır ve gibi tedavi edilmelidir gibi Uygulama / Denetim dosyaları tüm özel web sitesi yerli iken, geliyor.

Bizim kod yapısında bu farklılaşmayı kullanarak çok daha kolay, çok kolay birden fazla site arasında bizim in-house çerçeveyi yeniden yaptı.

Son bir düşünce olarak, orada büyük çerçevelerin bu Zend Framework, Symfony'de ve diğerleri gibi ne yaptığını bakarak düşünebilirsiniz. Tüm çerçevesi size çerçevelerin yapısı her yerde PHP geliştiricileri tarafından kullanılmakta olan yaygın, iyi uygulamaların içine anlayışlar bir sürü sağlayabilir istediğiniz daha fazla olabilir rağmen.