Çok karmaşık php uygulamalar Mimarlık?

6 Cevap php

Php mimari stratejiler geliştiricilerin karmaşık php uygulamaları kullanmak hangi bilmek istiyorum. Şimdiye kadar, ben modelleri, görüş ve denetleyici (ve kullanıcı erişim denetleyicisi gibi ortak görevler ele kontrolör eklentileri) oluşur mvc yapısını biliyorum. Ben bazı ortak maddeleri kolaylaştırır bazı iyi php çerçeveler biliyorum. Fakat sorun başladığında büyük ve karmaşık php uygulamaları hakkında i şey. Bu uygulamalarda orada yapmak için bir sürü ya da kontrol etmek için düşünmek çok, bu yüzden kod nerede olması gerektiğine karar değil çünkü.

Magento uygulama düşünün, bu çok büyük bir uygulamadır. i uygulamanın kaynak kodunu gözden geçirdiğinizde, ben tasarım stratejisini anlayamıyorum. onlar çok zayıf bir tasarım stratejisi ile böyle büyük bir uygulama inşa edemez çünkü ben tasarım stratejisi istediğinizden daha fazla desteklemelidir., kolayca çok büyük php uygulamaları işleyebilir bazı mükemmel tasarım stratejileri vardır biliyorum, böylece kod geliştirmek ve uygulama kolayca

Özetle, ben daha büyük uygulamaları oluşturmak nasıl istiyorum. Şimdi benim uygulamalarında kullanabileceğiniz tasarım stratejileri beni sınırlar, bu yüzden daha karmaşık uygulamalar oluşturmak olamaz. i tasarım stratejisi karmaşık uygulamalar işleyebilir hangi bilmek istiyorum.

i bu çok soyut bir soru olduğunu biliyorum, ama bu şimdi benim php plan akademik amatör hobi değil geliyor çünkü. ben daha yapmak istiyorum, ama kodlama hakkında daha karmaşık bir bilgi bulamıyorum çünkü ben, ben bir adım daha gidemem yerde duyuyorum. ne olursa olsun, Özetle, ben böyle magento gibi karmaşık php uygulamalar için tasarım stratejileri hakkında bilmek istiyorum.

Belki ben (mvc, ... ci pasta çerçeveler) biliyorum tasarım stratejileri bence daha karmaşık uygulamalar işleyebilir ..

sorularıma bazı hatalar varsa benim yetersiz İngilizce için üzgünüm, bunları düzeltmek için çekinmeyin ..

6 Cevap

Ben senin o parça sorunu kurumsal uygulamalar oluşturarak herhangi bir dilde bir sorun olduğunu aslında yalan olabilir inanıyorum, ve uygulanan olabilir tasarım kalıpları aslında dil agnostik.

Ben kuvvetle Martin Fowler tarafından Kurumsal Uygulama Mimarisi Modelleri öğrenmenizi öneriyoruz. Bu, daha sonra o kapağı bir dil belirli bir formatta aynı kavramları pick up herhangi diğer kitaplar için ufuklar iş olduğunu ve gerçekten web üzerinde sağlam, ölçeklenebilir uygulamalar oluşturmak için nelerin gerekli olduğunu anlamak istiyorsanız, o zaman gerekir Bu kitap ile kendinizi tanımak için.

Web uygulamaları ile çok yaygın ve popüler tasarım stratejisi hemen Model-View-Controller paradigma. Bu html çıkışı ile veritabanı erişim kodu karışarak değil böylece uygulama endişeleri ayrılığı tamamen ilgisi var.

Konunun oldukça iyi bir tedavi için ben here (Zend Framework belli ama iyi genel konuyu kapsar) bakmak öneririz ve here özel modeller hakkında bir tartışma için olur. Eğer daha genel PHP MVC öğretici bakmak istiyorsanız Veya, Rasmus Lerdorf var one.

Bunun yanı sıra (ve yine Martin Fowler tarafından PofEAA bu öğrenebilirsiniz) Eğer güçlü ve zayıf yönleri çeşitli tasarım desenleri ne Nesne-İlişkisel-Haritalama hakkında bilgi edinmek gerekir.

Ne yazık ki sizin ihtiyaçlarınıza bağlı olarak bir şeyler yapmak için çok iyi bir yolu vardır, ama her iyi yolu onlara bir zillion korkunç yanlış yolları hakkında vardır.

Hangi çerçeveler Eğer inceledik? Zaten değil varsa Symfony, Zend Framework ve CakePHP'ye inceleyin. Ve tarafından, incelemek aslında bu çerçeveleri kullanarak orta ölçekli uygulamalar yazmak demek. Sadece okuma kod genellikle nasıl çalıştığına dair bir kavrayışa almak için yeterli değildir. Sık sık aslında kullanmak ve bunu değiştirmek için denemek zorunda.

Ayrıca uygulama için geçerli olabilir tasarım stratejilerinin bazı fikirler için PHP 5 Objects Patterns and Practice kitap kontrol etmek isteyebilirsiniz. Ayrıca diğer dillerde yazılmış çerçeveleri inceleyerek biraz öğrenebilirsiniz. PHP çerçeveler birçok tasarımcıları ağır örneğin, Ruby on Rails ilham edildi.

Zaten değil varsa, Nesne Tabanlı Programlama içine bakmak gerekir. O here hakkında gerçekten büyük bir öğretici var. Ben bu belki büyük web uygulamaları ki (ben dahil) mutlaka amatör için kolay değildir yapmak en önemli şey olduğunu düşünüyorum. Kod Ateşleyici gibi MVC çerçeveler içinde hile modelleri veya kitaplıklara gibi sınıflar (ya da nesneler) bir dizi oluşturmaktır.

Bu gerçekten çok soyut bir soru ve "çok karmaşık" çok spesifik değildir. Ben insanların ilişkilendirmek "karmaşık" uygulamaları hakkında konuşurken duyduğunuzda

a) Birisi basit bir Problem için karmaşık bir mimari kullanıyor. Örneğin serin geliyordu her tasarım deseni ve çerçevesini kullanarak.

b) Birisi oluşturma ve mümkün olduğunca sıkı olarak birlikte tescilli ve belgesiz arayüzleri ve çift her şeyi kullanarak, tarihsel olarak gelişmiş bir uygulama içine tamamen farklı usecase ton ezmek için çalıştı. Ne yazık ki kötü bir tasarım stratejisi ile büyük uygulamalar oluşturmak ve onları karmaşık kılan CAN.

c) Eski sistemler ve Legacy Sistem entegrasyonu (Tamam b) bakınız

Magento may be a big application, but the underlying Framework is still the Zend Framework, mainly its MVC part. So reading the Zend_Framework documentation will help you a lot to understand Magentos architecture as well (I won't recommend it the other way around by trying to dig into the Zend Framework through the Magento source). I would recommend to actually start building a bigger application with one of the MVC frameworks yourself, because that is the best way to learn the architecture and its benefits and where the limits are.

Peki, bile bile sadece tüm PHP hakkında bir soru ... PHP ile görüntüleri gibi statik içerik idare ederseniz MVC ya da kullanan olursa olsun kötü bir performans neden olacaktır. Sen böyle şeyler için nginx gibi ön uç kullanmak gerekir.

Gerçek hayattan http://highscalability.com/ gerçek hikayelere bakmak!

Ayrıca NoSQL not edin.