在現代Web開發中,MVC(模型 - 視圖 - 控制器)設計模式被廣泛使用。MVC是一種軟件架構模式,將一個應用程序分為三個核心部分:模型,視圖和控制器。
在MVC架構中,模型是負責數據和業務邏輯的部分。它從數據庫中檢索數據,并將其轉換為對象,以便控制器和視圖使用。控制器是負責處理用戶交互并與模型和視圖進行通信的部分。視圖是呈現數據的部分。
在PHP開發中,MVC模式也廣泛使用。下面是一個簡單的MVC PHP案例,其中使用了模型來從數據庫中獲取數據,控制器處理用戶請求并將其發送到合適的視圖。
$dbhost = 'localhost'; $dbname = 'mydatabase'; $dbuser = 'myusername'; $dbpass = 'mypassword'; $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
上述代碼連接到MySQL數據庫,并將連接保存在變量$conn中。接下來,我們需要創建一個模型來從數據庫中提取數據。
class ArticleModel { protected $conn; public function __construct($conn) { $this->conn = $conn; } public function getArticles() { $stmt = $this->conn->prepare('SELECT * FROM articles'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } }
在上面的代碼中,我們創建了一個名為ArticleModel的類,該類將連接對象作為構造函數傳遞并保存在一個成員屬性中。方法getArticles()從文章表中選擇所有文章記錄,并使用PDO查詢函數將結果返回為一個關聯數組。
現在我們需要創建一個控制器來處理請求并將數據發送到視圖。下面是一個簡單的示例。
class ArticleController { protected $model; public function __construct(ArticleModel $model) { $this->model = $model; } public function list() { $articles = $this->model->getArticles(); include 'views/articleList.php'; } }
在上面的代碼中,我們創建了一個名為ArticleController的類,該類將ArticleModel對象作為構造函數傳遞并保存在一個成員屬性中。方法list()檢索所有文章并將它們發送到視圖文件。
最后,我們需要創建一個視圖來呈現數據。下面是一個簡單的示例。
<?php foreach($articles as $article): ?> <div class="article"> <h2 class="title"><a href="<?php echo $article['url']; ?>"><?php echo $article['title']; ?></a></h2> <p class="content"><?php echo $article['content']; ?></p> </div> <?php endforeach; ?>
在上面的代碼中,我們使用foreach循環遍歷所有文章,并將它們呈現為HTML div元素。
以上是一個簡單的MVC PHP案例。注意到模型,控制器和視圖各自有其特定的職責,而不是所有代碼混雜在一起。這種分離使得代碼更易于維護和擴展,也使得我們能夠更快地構建和測試應用程序。