簡體   English   中英

非常復雜的PHP應用程序的架構?

[英]Architecture of very complex php applications?

我想知道開發人員在復雜的php應用程序中使用哪些php架構策略。 到目前為止,我知道mvc結構,包括模型,視圖和控制器(以及處理常見任務的控制器插件,如用戶訪問控制器)。 我知道一些很好的PHP框架,它使一些常見的東西更容易。但問題開始時,我關於龐大而復雜的PHP應用程序。 因為在這些應用程序中有很多東西要做,或者有很多想要檢查的東西,所以我無法確定哪些代碼應該在哪里。

想想magento應用程序,這是一個非常龐大的應用程序。 當我查看應用程序的源代碼時,我無法理解設計策略。 我知道有一些完美的設計策略可以輕松處理非常大的php應用程序,因為它們無法使用非常弱的設計策略構建如此龐大的應用程序。設計策略應該支持超出您的需求,因此您可以改進代碼和應用很容易

總而言之,我想如何創建更大的應用程序。 現在我在我的應用程序中使用的設計策略限制了我,所以我無法創建更復雜的應用程序。 我想知道哪種設計策略可以處理復雜的應用程序。

我知道這是一個非常抽象的問題,但這是因為現在我的PHP背景來自業余愛好,而不是來自學術界。 我想做更多,但我在一個我不能再往前走的地方,因為我找不到更復雜的編碼信息。 無論如何,總而言之,我想了解復雜的php應用程序(如magento)的設計策略。

也許我所知道的設計策略(mvc,frameworks ci cake ...)可以處理比我想象的更復雜的應用程序。

如果我的問題有一些錯誤,請隨時糾正,對不起我的英語不足..

我相信你的部分問題可能在於創建企業應用程序是任何語言的問題,而且可以實現的設計模式實際上與語言無關。

我強烈建議您熟悉Martin Fowler的企業應用程序架構模式。 這是您以后可能提到的任何其他書籍的開創性工作,它們涵蓋了語言特定格式的相同概念,如果您想真正了解在Web上創建健壯,可擴展的應用程序所需的內容,那么您將需要熟悉這本書。

現在,Web應用程序的一種非常常見和流行的設計策略是模型 - 視圖 - 控制器范例。 這必須完全解決您的應用程序中的問題,以便您不會使用html輸出混合數據庫訪問代碼。

對於這個主題的一個相當好的處理我建議你看看這里 (Zend框架具體,但它涵蓋了一般主題),並在這里專門討論模型。 或者如果你想看一個更通用的PHP MVC教程,Rasmus Lerdorf有一個

除此之外(您可以通過Martin Fowler從PofEAA中學到這一點),您將需要了解對象 - 關系 - 映射各種設計模式的優點和缺點。

不幸的是,有許多好的方法可以根據你的需要做事,但是對於每一種好的方式,都有大量可怕的錯誤方法。

您檢查了哪些框架? 如果你還沒有,請檢查symfony,Zend Framework和CakePHP。 通過檢查,我的意思是實際使用這些框架編寫中型應用程序。 簡單地閱讀代碼往往不足以掌握它的工作原理。 您經常需要實際使用它並嘗試修改它。

您可能還想查看PHP 5對象模式和練習一書了解可能適用於您的應用程序的一些設計策略的想法。 您也可以通過研究用其他語言編寫的框架來學習相當多的東西。 例如,許多PHP框架的設計者都受到Ruby on Rails的啟發。

這確實是非常抽象的問題,“非常復雜”並不是非常具體。 當我聽到人們談論“復雜”應用程序時,我將其與之聯系起來

a)有人正在使用復雜的架構來解決一個簡單的問題。 例如,通過使用聽起來很酷的每個設計模式和框架。

b)有人試圖將大量完全不同的用例壓縮成歷史悠久的應用程序,創建和使用專有和未記錄的接口,並盡可能緊密地將所有內容耦合在一起。 不幸的是,CAN使用糟糕的設計策略構建了巨大的應用程序,這就是使它們變得復雜

c)遺留系統和遺留系統集成(好的,見b)

Magento可能是一個很大的應用程序,但底層框架仍然是Zend Framework ,主要是它的MVC部分。 因此,閱讀Zend_Framework文檔將幫助您了解Magentos架構(我不會通過嘗試通過Magento源深入了解Zend框架來推薦它)。 我建議你自己開始用一個MVC框架開始構建一個更大的應用程序,因為這是了解架構及其優點和限制的最佳方式。

如果您還沒有,那么您應該研究面向對象的編程。 有一個關於一個真正偉大的教程在這里 我認為這可能是大型網絡應用程序做的最重要的事情,對業余愛好者來說不一定是直觀的(包括我自己)。 像Code Igniter這樣的MVC框架中的技巧是將一系列類(或對象)構建為模型或庫。

好吧,即使你的問題只是關於PHP的問題...如果用PHP處理靜態內容如圖像,無論你是否使用MVC都會導致性能不佳。 你應該像nginx一樣使用前端來做這些事情。

看看現實生活中的http://highscalability.com/真實故事!

另請注意NoSQL。

我試圖理解你的問題,發現magento架構非常強大但很復雜。 我得到了Zendfox的解決方案,它是一個Web應用程序框架,適合從小到大的應用程序開發。 它有非常可愛的應用程序架構,可以很容易地管理。 它還有模塊開發人員在幾分鍾內基於向導的工具為zendfox創建自定義模塊。

所以看看: http//www.zendfox.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM