用deepseek创建可运行的简单的php框架

构建一个简单的PHP MVC框架(从零开始)

本文将手把手教你构建一个精简的PHP MVC框架,适合学习框架原理和快速开发小型项目。以下是完整实现步骤:


一、框架结构

创建以下目录结构:

/myframework
├── app/
│   ├── controllers/
│   ├── models/
│   └── views/
├── core/
│   ├── Router.php
│   ├── Controller.php
│   └── Model.php
├── public/
│   └── index.php
└── config.php

二、核心组件实现

1. 路由系统 (core/Router.php)

class Router {
    protected $controller = 'Home';
    protected $method = 'index';
    protected $params = [];

    public function __construct() {
        $url = $this->parseUrl();
        
        // 控制器处理
        if (isset($url[0]) && file_exists("../app/controllers/{$url[0]}.php")) {
            $this->controller = $url[0];
            unset($url[0]);
        }
        
        require_once "../app/controllers/{$this->controller}.php";
        $this->controller = new $this->controller;

        // 方法处理
        if (isset($url[1])) {
            if (method_exists($this->controller, $url[1])) {
                $this->method = $url[1];
                unset($url[1]);
            }
        }

        // 参数处理
        $this->params = $url ? array_values($url) : [];
        
        // 调用控制器方法
        call_user_func_array(
            [$this->controller, $this->method], 
            $this->params
        );
    }

    private function parseUrl() {
        if (isset($_GET['url'])) {
            return explode('/', filter_var(
                rtrim($_GET['url'], '/'), 
                FILTER_SANITIZE_URL
            ));
        }
    }
}

2. 基础控制器 (core/Controller.php)

class Controller {
    protected function view($view, $data = []) {
        extract($data);
        require_once "../app/views/$view.php";
    }
}

3. 基础模型 (core/Model.php)

class Model {
    protected $db;

    public function __construct() {
        $this->db = new PDO(
            'mysql:host='.DB_HOST.';dbname='.DB_NAME,
            DB_USER, 
            DB_PASS
        );
    }

    // 基础查询方法
    public function query($sql) {
        return $this->db->query($sql);
    }
}

三、配置文件 (config.php)

<?php
// 数据库配置
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USER', 'root');
define('DB_PASS', '');

// 框架配置
define('BASE_URL', 'http://localhost/myframework/public/');

四、入口文件 (public/index.php)

<?php
// 初始化配置
require_once '../../config.php';

// 自动加载核心类
spl_autoload_register(function ($class) {
    require_once '../core/' . $class . '.php';
});

// 启动路由
new Router();

五、创建示例功能

1. 创建首页控制器 (app/controllers/Home.php)

class Home extends Controller {
    public function index() {
        $data = [
            'title' => '欢迎使用MyFramework',
            'content' => '这是一个简单的PHP MVC框架示例'
        ];
        $this->view('home/index', $data);
    }
}

2. 创建视图文件 (app/views/home/index.php)

<!DOCTYPE html>
<html>
<head>
    <title><?= $title ?></title>
</head>
<body>
    <h1><?= $title ?></h1>
    <p><?= $content ?></p>
</body>
</html>

3. 创建模型示例 (app/models/User.php)

class User extends Model {
    public function getAll() {
        return $this->query("SELECT * FROM users");
    }
}

六、运行与测试

  1. 配置虚拟主机指向 public/ 目录
  2. 访问 http://localhost/ 查看首页
  3. 尝试创建新路由:http://localhost/user/list

七、扩展建议

  1. 添加.htaccess实现友好URL:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    
  2. 添加以下功能增强框架:

    • 中间件系统
    • 表单验证器
    • ORM功能
    • 模板引擎
    • 错误处理机制

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐