当前位置:首页 > PHP

php 简单框架实现

2026-01-28 22:23:11PHP

实现一个简单的 PHP 框架

以下是一个基础 PHP 框架的实现思路,包含路由、控制器和视图的核心功能。框架结构清晰,适合学习或小型项目。

目录结构

/app
    /controllers
        HomeController.php
    /views
        home.php
/public
    index.php
    .htaccess
/config
    routes.php

路由系统

/config/routes.php 中定义路由规则:

<?php
return [
    '/' => ['HomeController', 'index'],
    '/about' => ['HomeController', 'about']
];

前端控制器

/public/index.php 作为入口文件:

<?php
require_once '../config/routes.php';

$request = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

if (array_key_exists($request, $routes)) {
    $controller = $routes[$request][0];
    $method = $routes[$request][1];

    require_once "../app/controllers/$controller.php";
    $controllerInstance = new $controller();
    $controllerInstance->$method();
} else {
    header("HTTP/1.0 404 Not Found");
    echo '404 Not Found';
}

控制器示例

/app/controllers/HomeController.php

<?php
class HomeController {
    public function index() {
        require_once '../app/views/home.php';
    }

    public function about() {
        echo 'About Page';
    }
}

视图文件

/app/views/home.php

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to our simple PHP framework</h1>
</body>
</html>

URL重写

/public/.htaccess 文件配置:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

数据库集成

添加简单的数据库连接功能,创建 /config/database.php

<?php
class Database {
    private $connection;

    public function __construct() {
        $this->connection = new PDO(
            'mysql:host=localhost;dbname=test',
            'username',
            'password'
        );
    }

    public function query($sql, $params = []) {
        $stmt = $this->connection->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }
}

自动加载

实现简单的类自动加载,在入口文件添加:

php 简单框架实现

spl_autoload_register(function ($class) {
    $file = '../app/controllers/' . $class . '.php';
    if (file_exists($file)) {
        require_once $file;
    }
});

这个简单框架包含了 MVC 的基本结构,可以进一步扩展添加中间件、依赖注入容器等功能。实际项目中建议使用成熟的框架如 Laravel 或 Symfony。

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

相关文章

vue框架实现定位

vue框架实现定位

Vue 实现定位的方法 在 Vue 中实现定位功能通常涉及浏览器原生 API 或第三方库的集成。以下是几种常见实现方式: 使用浏览器 Geolocation API 通过 navigator.geo…

vue  简单菜单实现

vue 简单菜单实现

实现简单菜单的步骤 在 Vue 中实现一个简单的菜单,可以通过以下方法完成: 使用 v-for 动态渲染菜单项 在 Vue 的模板中,使用 v-for 遍历菜单数据,动态生成菜单项。 <…

实现简单的vue

实现简单的vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-app cd my…

基于vue框架实现

基于vue框架实现

基于 Vue 框架实现功能需结合其核心特性(如组件化、响应式数据绑定)和生态工具(如 Vue Router、Pinia)。以下是关键实现步骤和代码示例: 项目初始化与基础配置 使用 Vite 或 V…

vue框架实现app

vue框架实现app

Vue框架实现App的步骤 Vue框架可以通过多种方式实现移动端App开发,主要分为混合开发(Hybrid)和原生渲染两种模式。以下是具体实现方法: 使用Cordova/Capacitor打包为混合…

vue简单代码实现

vue简单代码实现

以下是一个基于 Vue 3 的简单代码实现示例,包含基础功能演示: 基础模板结构 <!DOCTYPE html> <html lang="en"> <head>…