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框架,包括路由、控制器、模型和视图,以及相应的示例文件,在此基础上我们可以开发更加复杂的应用程序。