php框架实现
PHP 框架实现
PHP 框架的实现通常涉及以下几个核心部分:路由、控制器、模型、视图、数据库抽象层和依赖注入。以下是一个简单的 PHP 框架实现示例。
路由系统
路由系统负责将 HTTP 请求映射到对应的控制器和方法。以下是一个简单的路由实现:
class Router {
private $routes = [];
public function addRoute($method, $path, $handler) {
$this->routes[] = [
'method' => $method,
'path' => $path,
'handler' => $handler
];
}
public function dispatch($method, $uri) {
foreach ($this->routes as $route) {
if ($route['method'] === $method && $route['path'] === $uri) {
return $route['handler']();
}
}
http_response_code(404);
echo "404 Not Found";
}
}
控制器
控制器负责处理业务逻辑并返回响应。以下是一个简单的控制器示例:

class HomeController {
public function index() {
return "Hello, World!";
}
}
模型
模型用于与数据库交互。以下是一个简单的模型实现:
class User {
private $db;
public function __construct($db) {
$this->db = $db;
}
public function getUsers() {
return $this->db->query("SELECT * FROM users");
}
}
视图
视图负责渲染 HTML 模板。以下是一个简单的视图实现:

class View {
public static function render($template, $data = []) {
extract($data);
include "views/$template.php";
}
}
数据库抽象层
数据库抽象层用于统一数据库操作。以下是一个简单的 PDO 封装:
class Database {
private $pdo;
public function __construct($dsn, $username, $password) {
$this->pdo = new PDO($dsn, $username, $password);
}
public function query($sql, $params = []) {
$stmt = $this->pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll();
}
}
依赖注入
依赖注入用于管理类之间的依赖关系。以下是一个简单的容器实现:
class Container {
private $bindings = [];
public function bind($key, $value) {
$this->bindings[$key] = $value;
}
public function resolve($key) {
if (isset($this->bindings[$key])) {
return call_user_func($this->bindings[$key]);
}
throw new Exception("No binding found for $key");
}
}
框架入口
将所有部分整合到一个入口文件中:
require_once 'Router.php';
require_once 'HomeController.php';
require_once 'Database.php';
require_once 'View.php';
require_once 'Container.php';
$container = new Container();
$container->bind('db', function() {
return new Database('mysql:host=localhost;dbname=test', 'root', '');
});
$router = new Router();
$router->addRoute('GET', '/', function() {
$controller = new HomeController();
return $controller->index();
});
$method = $_SERVER['REQUEST_METHOD'];
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$router->dispatch($method, $uri);
通过以上步骤,可以实现一个简单的 PHP 框架。实际开发中,还需要考虑更多的功能,如中间件、验证、缓存等。






