当前位置:首页 > PHP

php单一入口实现

2026-02-13 19:50:35PHP

单一入口实现原理

PHP单一入口模式通过一个中心脚本(如index.php)处理所有请求,根据URL参数或路径分发到不同控制器。这种方式便于统一管理权限、日志、错误处理等公共逻辑。

基本实现步骤

创建入口文件index.php:

<?php
// 定义应用目录常量
define('APP_PATH', dirname(__FILE__));

// 加载配置文件
require APP_PATH . '/config.php';

// 获取请求路径
$request = $_SERVER['REQUEST_URI'];
$script = $_SERVER['SCRIPT_NAME'];

// 移除基础路径和查询参数
$path = str_replace(dirname($script), '', $request);
$path = strtok($path, '?');

// 路由解析
$route = explode('/', trim($path, '/'));
$controller = !empty($route[0]) ? $route[0] : 'home';
$action = !empty($route[1]) ? $route[1] : 'index';

// 安全过滤
$controller = preg_replace('/[^a-z0-9_]/i', '', $controller);
$action = preg_replace('/[^a-z0-9_]/i', '', $action);

// 加载控制器文件
$controller_file = APP_PATH . "/controllers/{$controller}.php";
if (file_exists($controller_file)) {
    require $controller_file;
    $controller_class = ucfirst($controller) . 'Controller';

    if (class_exists($controller_class)) {
        $instance = new $controller_class();

        if (method_exists($instance, $action)) {
            $instance->$action();
            exit;
        }
    }
}

// 404处理
header("HTTP/1.0 404 Not Found");
echo '404 Not Found';

控制器示例

创建controllers/home.php:

php单一入口实现

<?php
class HomeController {
    public function index() {
        echo 'Welcome to homepage';
    }

    public function about() {
        echo 'About us page';
    }
}

URL重写配置

Apache的.htaccess示例:

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

Nginx配置示例:

php单一入口实现

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

进阶优化方案

使用composer加载器实现自动加载:

require 'vendor/autoload.php';

实现依赖注入容器:

$container = new Container();
$container->set('db', function() {
    return new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
});

框架推荐方案

对于生产环境,建议使用成熟框架的单一入口实现:

  • Laravel:public/index.php
  • Symfony:web/app.php
  • ThinkPHP:public/index.php

这些框架已内置完善的路由、中间件和依赖管理机制,避免重复造轮子。

标签: 入口php
分享给朋友:

相关文章

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…