本文將介紹PHP MVC開發實例,MVC的全稱是Model-View-Controller,即模型-視圖-控制器。
MVC設計模式是一種分離關注點的軟件架構模式,將應用程序分成三個核心部分,分別是模型(Model),視圖(View),控制器(Controller),三個部分各司其職,實現了代碼可讀性、可擴展性及管理性,使代碼更加整潔、架構更加清晰。
下面將以一個博客系統為例介紹PHP MVC開發實例:
/---app | /---controllers | | /---BlogController.php | | /---UserController.php | | /---... | /---models | | /---BlogModel.php | | /---UserModel.php | | /---... | /---views | /---blog | | /---index.php | | /---show.php | | /---... | /---user | | /---index.php | | /---show.php | | /---... | /---... /---public | /---index.php | /---...
上面所示是一個標準的MVC目錄結構,其中,app目錄是MVC模塊的核心,包括了三個部分:控制器、模型、視圖;public目錄是公共目錄,入口文件index.php也在該目錄下。
在控制器文件中, BlogController.php 代碼如下:
<?php class BlogController { public function index() { $list = BlogModel::getAll(); include APP_PATH . 'views/blog/index.php'; } public function show() { $id = $_GET['id']; $model = BlogModel::getById($id); include APP_PATH . 'views/blog/show.php'; } }
如上述代碼所示, 控制器負責接收請求,進行相關處理,并根據需要加載相應的模型和視圖。在這里,BlogController.php 取得了 BlogModel.php 的數據,然后通過 include 引入了視圖views下的文件。
在模型文件中,BlogModel.php 代碼如下:
<?php class BlogModel { public static function getAll() { //獲取所有博客列表 } public static function getById($id) { //根據ID獲取一篇博客 } }
如上述代碼所示,模型負責處理數據及相關的業務邏輯,并返回給控制器相應的數據。在這里,BlogModel.php 定義了兩個方法,分別是獲取所有博客列表和根據ID獲取一篇博客。
在視圖文件中,以 views/blog/index.php 和 views/blog/show.php 為例,代碼如下:
<?php foreach ($list as $item):?><h2><a href="index.php?c=blog&a=show&id="></h2><p></p><?php endforeach;?>
<h2><p>
如上述代碼所示,視圖負責展示數據及相關的UI,將控制器傳遞過來的數據展示在頁面上。在這里,index.php 通過 PHP 的 foreach 循環來遍歷所有博客列表,show.php 則直接展示單篇博客的內容。
總結:MVC將應用程序分成三個部分:模型、視圖和控制器,實現了代碼可讀性、可擴展性及管理性,使代碼更加整潔、架構更加清晰。將PHP應用到MVC架構開發當中,使得程序變得清晰易讀,容易維護和擴展。