2017-06-03 53 views
-1

添加MVC關係你好我下面講MVC上sitepoint教程(模型視圖控制器)。但是,該教程中的說明並未完全清楚,並且評論部分已關閉。哪個文件我太PHP

在本教程https://www.sitepoint.com/the-mvc-pattern-and-php-1/它betwee模型,視圖和位指示設置的關係說。它提供了代碼,但沒有說明代碼應該放在哪裏,或者應該放在哪個文件中。首先,他們告訴我們使用教程中的代碼製作模型,而不是製作視圖文件,而不是使用控制器文件爲教程中提供的文件提供所有代碼。然後他們說使用下面的代碼來建立關係,但是他們沒有聲明該代碼的放置位置。

<?php 
$model = new Model(); 
$controller = new Controller($model); 
$view = new View($controller, $model); 
echo $view->output(); 

我將不勝感激任何幫助,您可以提供或建議我在這個特定的代碼去建立關係請。

我真誠道歉,如果這是不是要問正確的地方。當我提問時,我似乎被禁止在3天內發佈問題,而且我不確定爲什麼會有這個原因。

所以接受我的道歉,如果這是這些職位的另一個。

在此先感謝。

+0

好像你需要做的是學習如何使用一個MVC框架(Laravel,笨等)與剛學的原理是什麼MVC模式。本教程只是理論上的解釋這個概念。試試Laravel這是一個非常棒的PHP框架,它有很棒的教程和視頻教程(https://laracasts.com/series/laravel-5-fundamentals/) – Yani

+0

通常你會把不同的代碼放在不同的文件中,並使用include()將它們連接在一起。對於這個例子,你可以把所有的代碼放在一個文件中。 – RST

+0

也許還不清楚,因爲您可以在代碼中添加MVC。我會說沒有框架看起來一樣。我自己也是一名學生,目前正在構建一個包含MVC的非常基礎的框架,而且這遠離開放scource框架的質量。難怪整個團隊都在努力工作多年。我認爲你需要弄清楚使用MVC的重點和優勢。如果你能看到大局,你將更有可能理解如何把它放到你的項目中,但是你需要首先控制你的代碼,把它分成不同的步驟/對象。 –

回答

4

一般情況下,該代碼會去引導文件。在DIC和執行或路由器的設置之後。

對於真實世界的代碼,你該教程中看到的結構,這是一個非常簡單的例子。不會有一個神奇的「模型」,你的觀點和控制器依賴,但各種服務。在選定的控制器上執行的命令選擇將由路由結果決定。

在實踐中,該代碼會看起來更接近:

// routing is used to get $command and $resource 
// where $command = $request->getMethod() . $parameters['action']; 

$controller = $container->get("controllers.$resource"); 
if (method_exists($controller, $command)) { 
    $controller->{$command}($request); 
} 

$view = $container->get("views.$resource"); 
if (method_exists($view, $command)) { 
    $response = $view->{$command}($request); 
    $response->send(); 
} 
+0

我沒有引導文件。我只有Model,View和Controller以及索引文件。 –

+0

@JediMasterOrion這可能是你應該修復的東西。您不應該在'DOCUMENT_ROOT'中保留您的應用程序的邏輯和配置,因爲php解釋器可能無法加載。在這種情況下,您的所有代碼都可以被訪問者讀取。推薦的做法是對於'index.php'文件只包含像require __DIR__這樣的東西。 '/../ app/bootstrap.php';',它將執行傳遞給一個文件,該文件不在web服務器的直接範圍之內。 –

+0

至於「MVC」部分,你可能會發現[這篇文章](https://stackoverflow.com/a/5864000/727208)有用(甚至認爲它有點過時了......我應該在本月清理它) 。 –