我一直在試圖瞭解是否可以將MVC體系結構應用於過程,以及如何將其實現到我的代碼中。根據我的理解,MVC基本上代表了業務邏輯,表示層和其他邏輯的分離,儘管它似乎總是針對OO-PHP。我可以將MVC設計模式應用於程序性PHP
你能推薦在程序上下文中處理MVC的最佳方法嗎?
謝謝。
我一直在試圖瞭解是否可以將MVC體系結構應用於過程,以及如何將其實現到我的代碼中。根據我的理解,MVC基本上代表了業務邏輯,表示層和其他邏輯的分離,儘管它似乎總是針對OO-PHP。我可以將MVC設計模式應用於程序性PHP
你能推薦在程序上下文中處理MVC的最佳方法嗎?
謝謝。
MVC是面向對象的模式,你想用一個程序上下文接近它。
這顯然是錯誤的。 MVC與面向對象編碼無關。
MVC是一種軟件體系結構模式,旨在將用戶與信息的表示分離開來。
你是如何做到這一點取決於你的。你可以使用你想要的任何編碼形式,面向對象,程序,功能以及不是什麼。
關於手頭的問題:在編寫過程式PHP時,實現MVC模式的最簡單方法是使用許多小函數,其中每個特定函數都有自己獨特的任務。不要讓一個功能有很多任務。這樣分離事情就更容易了。也不要在同一個文件中保存很多功能。而是把相關的功能集中在一個小組中,每個小組放在它自己的文件中(實際上在OO中用類來完成)。
有人在這裏做它用一個簡單的例子,MVC沒有面向對象:http://www.fluffycat.com/PHP-Design-Patterns/Non-OO-MVC/
是的,這大概總結了MVC ...但它沒有被面向對象的...你只需要遵循一些黃金法則:
除此之外,你可以做任何你想做的事情。你基本上需要一組程序來充當控制器 - 解析$_REQUEST
變量(更可能是GET/POST/COOKIE)執行任何數據查找building +填充模型,然後解析另一組程序,在模型中併爲用戶呈現。該模型可以像關聯數組一樣簡單。
這有點奇怪。 MVC是面向對象的模式,你想用程序上下文來處理它。
我想到的第一件事是有一些模板引擎爲了從PHP代碼中分離PHP。這將是程序性MVC的一大步:)
接下來就是命名同一組的函數(也就是說,包含相關對象的邏輯的函數)並帶有前綴(就像您在類名下面分組的方法一樣) 。
例如 - 看看PHP程序功能使用MySQL:
mysql_connect()
mysql_real_escape_string();
mysql_select_db();
mysql_query();
等 和組這些功能在不同的文件。這也有助於解耦一些邏輯。
如果什麼都來我的腦海裏,我如果要實現一個新的設計模式,你最有可能被重構或者從頭開始編寫一些編輯自己的帖子:)
。如果您打算使用MVC,我強烈建議轉移到OOP。它可以在程序上實現,但會非常黑客,並不是一個好的解決方案。
有幾個免費的MVC PHP解決方案,你可以輕鬆地拿起。這裏有幾個:
絕對。使用以下任意組合:
任何將模型,視圖和控制器的行更多地組織代碼的東西。在某些人的想法中,它可能不是「純粹的」或「正確的」MVC ......但如果它更有意義地組織你的程序代碼或者教你更多關於MVC的知識,那麼這是件好事。
+1 @Daniel好的問題,我在這方面看起來有很長的時間,直到現在我沒有很好的答案,我希望有人給你一個很好的答案。程序化編程風格基本上是很多指令幾乎在同一地方,我的意思是長代碼,難以維護等等,而在OO中是不同的。前段時間,我在三個不同的部分做了mysqlf searate。 Bussines Logic,模板(接口,可能有模板邏輯),最後是數據抽象。在一般情況下MVC做這樣的事情,取決於你使用的是什麼框架..它有點複雜.. – B4NZ41 2011-02-01 18:38:46
我極力阻止人們使用Procedural PHP開始一個新項目。如果您想在舊項目中使用MVC:在OOP中重寫您的項目。相信我。 OOP將您的項目打開到一個嶄新的世界。 – Shoe 2011-02-01 18:46:05
是的,我有一些麻煩讓面向對象爲我正確工作,並想嘗試和MVC架構實現我的代碼。我沒有使用任何框架,我從頭編碼。 – 2011-02-01 18:46:28