当前位置:首页 > PHP

php 简单框架实现

2026-02-27 19:25:15PHP

实现一个简单的 PHP 框架

PHP 框架的核心通常包含路由、请求处理、控制器和视图渲染。以下是一个极简框架的实现示例,适合理解框架的基本原理。

目录结构

/myframework
    /app
        /controllers
            HomeController.php
        /views
            home.php
    /public
        index.php
    /core
        Router.php
        Request.php
        Controller.php

核心路由实现

/core/Router.php 中定义路由解析逻辑:

class Router {
    protected $routes = [];

    public function addRoute($method, $uri, $controller) {
        $this->routes[$method][$uri] = $controller;
    }

    public function dispatch($uri, $method) {
        if (isset($this->routes[$method][$uri])) {
            $controller = $this->routes[$method][$uri];
            $this->callAction(...explode('@', $controller));
        } else {
            throw new Exception("Route not found");
        }
    }

    protected function callAction($controller, $action) {
        $controller = new $controller;
        $controller->$action();
    }
}

请求处理基础

/core/Request.php 中封装请求数据:

php 简单框架实现

class Request {
    public static function uri() {
        return trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
    }

    public static function method() {
        return $_SERVER['REQUEST_METHOD'];
    }
}

基础控制器

/core/Controller.php 中定义控制器基类:

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

入口文件

/public/index.php 中初始化框架:

php 简单框架实现

require '../core/Router.php';
require '../core/Request.php';
require '../core/Controller.php';

$router = new Router();

// 注册路由
$router->addRoute('GET', '', 'HomeController@index');
$router->addRoute('GET', 'about', 'HomeController@about');

$uri = Request::uri();
$method = Request::method();

$router->dispatch($uri, $method);

示例控制器

/app/controllers/HomeController.php 中实现控制器:

class HomeController extends Controller {
    public function index() {
        $this->view('home', ['title' => 'Welcome']);
    }

    public function about() {
        $this->view('home', ['title' => 'About Us']);
    }
}

视图文件

/app/views/home.php 中创建简单视图:

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

运行方式

  1. 将项目放在 PHP 环境(如 Apache 或 Nginx)的 web 目录
  2. 配置 web 服务器将请求指向 /public/index.php
  3. 访问 http://localhosthttp://localhost/about 查看效果

这个实现展示了框架的基本组件,可根据需要扩展数据库支持、中间件、依赖注入等功能。

标签: 框架简单
分享给朋友:

相关文章

vue实现简单表格

vue实现简单表格

Vue 实现简单表格的方法 使用原生 HTML 表格 在 Vue 模板中可以直接使用 HTML 原生表格标签,通过 v-for 动态渲染数据: <template> <tabl…

vue框架实现

vue框架实现

Vue 框架实现步骤 安装 Vue 通过 npm 或 yarn 安装 Vue 的最新版本。确保已安装 Node.js 环境。 npm install vue # 或 yarn add vue 创建…

jquery框架

jquery框架

jQuery框架简介 jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画设计和Ajax交互。其核心特点是“写得更少,做得更多”,通过封装常见任务,降低跨浏览器…

vue实现简单搜索

vue实现简单搜索

Vue 实现简单搜索功能 数据绑定与输入框 在 Vue 中实现搜索功能,通常使用 v-model 绑定输入框的值到数据属性。创建一个输入框用于用户输入搜索关键词: <template>…

vue实现简单拖拽

vue实现简单拖拽

Vue 实现简单拖拽功能 在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式: 使用 HTML5 拖放 API…

vue的框架实现

vue的框架实现

Vue 框架实现的核心要素 Vue.js 是一个渐进式 JavaScript 框架,其实现基于响应式数据绑定、组件化系统和虚拟 DOM 技术。以下是实现 Vue 框架的关键技术点: 响应式系统 Vu…