构建一个PHP5框架:第三部分

1. MVC框架的概述

MVC是Model-View-Controller(模型-视图-控制器)的缩写。它是一种组织代码的设计模式,将一个应用程序分成三个核心部分:模型、视图和控制器。

模型(Model)代表应用程序的数据和业务逻辑。视图(View)是应用程序的呈现部分。控制器(Controller)处理应用程序的逻辑和用户输入。

下面我们开始构建一个PHP5的MVC框架,实现一个简单的“Hello World”页面。

2. 构建基础框架

2.1 创建项目目录

我们先创建一个项目目录,并且在其中创建三个子目录:models、views和controllers,用于存放模型、视图和控制器。

├── app

│ ├── controllers

│ ├── models

│ └── views

├── public

├── vendor

├── composer.json

└── index.php

2.2 配置路由

我们需要创建一个文件routes.php,用于配置路由规则。在此文件中,我们将定义请求URI和控制器方法之间的映射。

$router = new Router();

$router->addRoute('GET', '/', 'HomeController@index');

$router->addRoute('GET', '/about', 'HomeController@about');

$router->addRoute('GET', '/contact', 'HomeController@contact');

这个路由文件定义了三个路由映射,使用GET请求来匹配URI路径。主页URI为"/",对应的控制器方法为HomeController@index;“关于我们”页面的URI为"/about",对应的控制器是HomeController@about;“联系我们”页面的URI为"/contact",对应的控制器是HomeController@contact。

3. 创建控制器和模型

3.1 创建控制器

我们需要在controllers目录下创建一个基础控制器类Controller。它包括一个构造函数,用于初始化模板引擎、请求和响应对象:

namespace App\Controllers;

use App\Core\View;

class Controller

{

protected $view;

protected $request;

protected $response;

public function __construct()

{

$this->view = new View();

$this->request = Request::createFromGlobals();

$this->response = new Response();

}

}

然后我们需要在controllers目录下创建HomeController类,它继承自基础控制器类Controller,包括三个控制器方法@index、@about和@contact:

namespace App\Controllers;

class HomeController extends Controller

{

public function index()

{

$this->view->render('home');

}

public function about()

{

$this->view->render('about');

}

public function contact()

{

$this->view->render('contact');

}

}

3.2 创建模型

我们需要在models目录下创建一个基础模型类Model。它包括一个构造函数,用于初始化数据库连接:

namespace App\Models;

use PDO;

class Model

{

protected $db;

public function __construct()

{

$dsn = 'mysql:host=localhost;dbname=test';

$username = 'root';

$password = '';

$this->db = new PDO($dsn, $username, $password);

}

}

然后我们需要在models目录下创建一个UserModel类,它继承自基础模型类Model。它包括一个查找用户方法find,用于查询数据库中的用户数据:

namespace App\Models;

class UserModel extends Model

{

public function find($id)

{

$stmt = $this->db->prepare('SELECT * FROM users WHERE id = ?');

$stmt->execute([$id]);

return $stmt->fetch();

}

}

4. 创建视图

我们需要在views目录下创建三个视图文件,分别包括home.php、about.php和contact.php。这些文件将呈现HTML内容,用于显示相应的页面。下面是一个示例home.php文件:

<h1>Welcome to Our Website!</h1>

<p>This is the home page.</p>

5. 整合代码

现在我们已经创建了MVC框架的各个部分,我们需要将它们整合起来。在index.php文件中,我们需要实例化路由类,获取当前请求URI,并根据路由规则调用相应的控制器方法,最后将结果呈现给用户:

require_once '../vendor/autoload.php';

use App\Core\Router;

$router = new Router();

require_once '../app/routes.php';

$uri = $_SERVER['REQUEST_URI'];

$route = $router->match($_SERVER['REQUEST_METHOD'], $uri);

$controllerName = 'App\\Controllers\\' . $route['controller'];

$controllerMethod = $route['method'];

$controller = new $controllerName();

$controller->$controllerMethod();

我们使用composer来加载我们的依赖并自动加载我们的类。

6. 总结

通过本文,我们了解了如何构建一个PHP5的MVC框架。MVC框架是构建PHP应用程序的一种流行的方式,它将应用程序分成三个核心部分:模型、视图和控制器。我们创建了一个基本的MVC框架,包括路由、控制器、模型和视图,以及相应的示例文件,在此基础上我们可以开发更加复杂的应用程序。

后端开发标签