我對模型 - 視圖 - 控制器模式有一些(可能是基本的)知識,我想用這個創建一個站點。但是我發現如何真正實現這一點有點令人困惑。我陷入了細節。如何在沒有使用框架的PHP中使用MVC
說我有一個網站,每個用戶保留一些待辦事項列表。你會如何處理這個問題? 你會創建什麼類?哪個類將輸出HTML,哪個類將作爲控制器服務器,以及如何與視圖進行通信以生成輸出?等
對不起,如果它看起來很愚蠢,我想它一定有點容易,但我卡住了。
我對模型 - 視圖 - 控制器模式有一些(可能是基本的)知識,我想用這個創建一個站點。但是我發現如何真正實現這一點有點令人困惑。我陷入了細節。如何在沒有使用框架的PHP中使用MVC
說我有一個網站,每個用戶保留一些待辦事項列表。你會如何處理這個問題? 你會創建什麼類?哪個類將輸出HTML,哪個類將作爲控制器服務器,以及如何與視圖進行通信以生成輸出?等
對不起,如果它看起來很愚蠢,我想它一定有點容易,但我卡住了。
在沒有現有框架的情況下做到這一點很有可能,只需創建自己的框架。無論如何,這不是一件非常困難的事情。
由於不是特定應用,你的MVC框架,就必須做到以下幾點:
有多種方式來實現的觀點,你可以效仿ASPMVC,並讓每個控制器的行動返回ActionResult
,其中有一個方法執行。然後,那個過載,ViewResult
將負責加載正確的視圖,並將其包含在適當的ModelData
中。
雖然你的問題有點過於寬泛,但我想我可以提供一些幫助。
我在開始使用框架時遇到的第一個問題是:我應該使用哪個框架?在你的情況下,我不會嘗試構建一個沒有預製框架的MVC網站。你最終要寫的大部分架構已經完成了數十次。
像數據庫抽象,登錄系統等事情是無聊的寫。不妨使用已經有這些東西的框架。
我會極力推薦這本書:http://www.amazon.com/Building-Applications-Symfony-CakePHP-Framework/dp/0470887346/ref=sr_1_2?ie=UTF8&qid=1315227178&sr=8-2。它將引導您使用三種不同的PHP MVC框架構建一個簡單的MVC網站。到本書結束時,您將對每個框架有足夠的經驗,以便您可以選擇哪一個最適合您。
或者,如果您想編寫自己的框架以便學習如何完成,我建議TJHeuvel的答案。另一種選擇是閱讀現有框架的源代碼,以便了解其他人是如何實現它的。
Kheldar的評論非常有道理。本教程實際上涵蓋了使用MVC模式製作微型框架。
儘管你需要給它添加 - 從,這是一個很好的孩子步入開發自己的MVC框架中添加自定義路線和某種路由引擎的方面,但除了..
這裏的來自RASMUS LERDORF自己的問題的確切答案。 Read through。
它看起來像http://talks.php.net/presentations/slides/mvc/example/model/db.phps不工作的嵌入式代碼示例。目前,它顯示「歡迎使用PHP演示系統」,這裏列出了存儲在這個系統中的所有可用演示類別。「有沒有人有PHP創建者教程的完整備份? – baptx
過期的文章 –
感謝您分享鏈接。這對初學者來說是一個很好的閱讀。 – Saurabh
爲了記錄在案:
它做在PHP中的MVC並不難,其更具有受到紀律處分,而成爲一個難點相關任務。
一個)模型(一個或多個)(可選,可以使用在PHP數組)
<?php
class MyModel() {
}
?>
B)路線(的index.php?)
<?php
include "...";
// here we collects all the information, such post,get and path values
$action=...;
$param=....;
switch($controller) {
case "my": // www.myweb.com/my/action
include "controller\MyController.php"; // open the right controller.
break;
}
?>
C)控制器
<?php
include "model\MyModel.php";
switch($action) {
case "add":
// here live the logic, information, call for services and such.
$model=....;
// and finally...
include "view\MyView.php";
break;
}
?>
d)查看
<html>
<body>
<?=$model->field;?>
</body>
<html>
備註:
a)視圖應儘可能乾淨。認爲該視圖可以由不關心php的網頁設計師創建。
b)視圖始終是過程的最後一步。視圖網絡總是不返回任何內容。
http://tutorialzine.com/2011/08/jquery-mobile-product-website/不是待辦事項列表網站,而是一個使用MVC模式的網站。 – Kheldar
按照通常的方式進行書寫,然後將其轉移到MVC。做幾次這樣的事情,你很快就可以從一個項目的開始就開始使用MVC模式。 – chelmertz