PHP面试题更新 2026-08-05

请你描述在 PHP 语言中搭建一个基础 MVC 框架的具体步骤,需要涵盖核心组件的职责划分和请求处理流程。

编码实现系统设计技术原理PHP

考察说明

考查候选人对 MVC 架构模式的理解以及使用 PHP 实现基础框架的工程能力。

回答思路

  1. 【回答框架 1】MVC 是 Model-View-Controller 的缩写,Model 负责业务数据和规则,View 负责展示,Controller 接收输入并调用 Model 和 View。在 PHP 中实现时,通常先定义前端控制器(入口文件 index.php),统一接收所有 HTTP 请求。
  2. 【回答框架 2】路由解析是框架的核心部分,需要将 URL 映射到对应的控制器和方法。常见做法是解析 URL 中的路径参数,例如 /index/user 映射到 IndexController 的 user 方法,同时支持参数传递。
  3. 【回答框架 3】实现请求对象(Request)和响应对象(Response)封装,Request 负责获取请求方法、参数和头信息,Response 负责设置状态码、响应头和输出内容。数据库操作可以封装一个简单 DB 类,基于 PDO 提供查询方法。
  4. 【回答框架 4】视图层加载对应模板文件,并将控制器传递的数据赋值给模板变量。可以使用原生 PHP 模板,也可以用简单的模板引擎替换字符串占位符。最后在入口文件中实例化控制器并调用方法,完成整个请求生命周期。
  5. 【回答框架 5】最佳实践包括使用命名空间自动加载类,定义核心类(如 Router、Request、Response、DB、View)的职责边界,并将配置独立成文件。注意入口文件重写规则,保证所有请求都经过 index.php。
  6. 【关键点 1】前端控制器统一入口是框架的基础,所有请求都需经过 index.php。
  7. 【关键点 2】路由解析负责识别 URL 中的控制器和方法,并支持参数绑定。
  8. 【关键点 3】使用 PDO 封装数据库操作,防止 SQL 注入。
  9. 【关键点 4】自动加载机制(如 spl_autoload_register 或 Composer)简化类文件的引用。
  10. 【关键点 5】视图与控制器分离,通过模板渲染输出内容。
  11. 【易错点 1】如果将业务逻辑直接写在控制器中,会破坏 MVC 分层,导致代码难以维护和测试。
  12. 【易错点 2】忽略 URL 重写规则可能导致所有请求无法到达 index.php,需要正确配置服务器伪静态规则。
  13. 【易错点 3】使用过于复杂的模板引擎可能增加学习成本,对于简单项目原生模板足够,避免过度设计。