当前位置:首页 > 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
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配置示例:

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');
});

框架推荐方案

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

php单一入口实现

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

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

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

相关文章

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…