PHP MVC寫法指的是一種將代碼按照模型(Model)、視圖(View)和控制器(Controller)的方式組織起來的編程模式。這種模式可以讓代碼更加結構化、模塊化和可維護。下面我們來看看PHP MVC的寫法,以及一些常見的使用方法。
Model層
在MVC模式中,Model層通常用于實現數據和業務邏輯處理。這一層的代碼通常包括DB類、數據模型和其他輔助類。例如,我們可以定義一個DB類來處理MySQL數據庫的連接和查詢:
class DB { private static $instance; private $pdo; private function __construct() { $dsn = 'mysql:host=localhost;dbname=test'; $user = 'root'; $passwd = '123456'; $this->pdo = new PDO($dsn, $user, $passwd); } public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new self(); } return self::$instance; } public function query($sql, $params = []) { $stmt = $this->pdo->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(PDO::FETCH_ASSOC); } }這個DB類可以方便地對MySQL數據庫進行連接、查詢和數據處理。我們也可以定義一些業務模型,例如:
class UserModel { public static function getUserById($id) { $db = DB::getInstance(); $sql = 'SELECT * FROM users WHERE id=:id'; return $db->query($sql, [':id' =>$id]); } } class ArticleModel { public static function getArticleById($id) { $db = DB::getInstance(); $sql = 'SELECT * FROM articles WHERE id=:id'; return $db->query($sql, [':id' =>$id]); } }這些模型可以封裝數據庫查詢和業務邏輯處理,方便程序員調用。 View層 View層通常用于展示數據,可以是HTML頁面、XML文件等等。在PHP中,我們通常使用模板引擎來渲染View。常用的模板引擎有Smarty、Twig、Blade等等。下面以Smarty為例來展示View的渲染過程:
$smarty = new Smarty(); $smarty->setTemplateDir('/path/to/templates/'); $smarty->setCompileDir('/path/to/templates_c/'); $data = [ 'title' =>'Hello, World!', 'content' =>'This is a sample page' ]; $smarty->assign($data); $smarty->display('index.tpl');這個例子中,我們通過Smarty設置了模板的路徑和編譯路徑,然后通過assign()方法將模板所需的數據傳遞給視圖。最后通過display()方法進行視圖渲染。 Controller層 Controller層通常用于處理用戶的請求、調用Model層進行數據處理、調用View層進行數據展示等等。在PHP中,我們可以使用路由器(Router)來實現不同URL的請求分發。例如:
class Router { private $routes; public function __construct() { $this->routes = []; } public function addRoute($path, $class, $method) { $this->routes[] = [ 'path' =>$path, 'class' =>$class, 'method' =>$method ]; } public function dispatch() { $path = $_SERVER['PATH_INFO']; foreach ($this->routes as $route) { if ($route['path'] == $path) { $controller = new $route['class'](); $method = $route['method']; $controller->$method(); return; } } header('HTTP/1.1 404 Not Found'); echo 'Page not found'; } } $router = new Router(); $router->addRoute('/', 'HomeController', 'index'); $router->addRoute('/users', 'UserController', 'index'); $router->dispatch();這個路由器根據不同的URL請求來指定不同的控制器和方法進行處理。每個控制器可以調用Model層進行數據處理,再通過View層展示數據。 總結 以上是PHP MVC的基本寫法,這種編程模式可以讓我們的代碼更加結構化、模塊化和可維護。當然,這只是一個簡單的例子,實際的應用可能更加復雜,需要我們根據實際情況進行調整和優化。