首页 > 编程语言 >一个简单的PHP单文件路由类示例

一个简单的PHP单文件路由类示例

时间:2025-01-21 13:35:52浏览次数:1  
标签:function 示例 basePath callback routes path PHP 路由

<?php
class Router {
    protected $routes = array();
    protected $basePath;
 
    public function __construct($basePath = null) {
        if ($basePath) {
            $this->basePath = rtrim($basePath, '/');
        } else {
            $this->basePath = '/';
        }
    }
 
    public function get($path, $callback) {
        $this->routes['GET'][$this->basePath . $path] = $callback;
    }
 
    public function post($path, $callback) {
        $this->routes['POST'][$this->basePath . $path] = $callback;
    }
 
    public function run() {
        $httpMethod = $_SERVER['REQUEST_METHOD'];
        $pathInfo = $_SERVER['PATH_INFO'];
 
        if (array_key_exists($pathInfo, $this->routes[$httpMethod])) {
            $callback = $this->routes[$httpMethod][$pathInfo];
            call_user_func($callback);
        } else {
            header('HTTP/1.0 404 Not Found');
            echo "404, Page not found";
        }
    }
}
 
// 使用示例
$router = new Router('/app');
$router->get('/hello', function() {
    echo "Hello, World!";
});
$router->run();

 

标签:function,示例,basePath,callback,routes,path,PHP,路由
From: https://www.cnblogs.com/cblx/p/18683435

相关文章

  • Golang Gin系列-6:Gin 高级路由及URL参数
    在本章中,我们将深入研究使用Gin框架的高级路由和URL参数。我们将介绍如何创建和使用路由组、应用中间件、提取路径参数、处理查询字符串、处理静态文件以及使用HTML模板。路由分组为什么要使用路由组?使用路由组有助于保持代码结构整洁有序。当路由被逻辑分组时,它变得更......
  • 鸿蒙HarmonyOS开发:自适应布局的介绍,使用场景、实现方式与示例解析
    文章目录一、布局简介二、自适应拉伸1、左右拉伸2、均分拉伸三、自适应缩放1、完整缩放2、占比缩放四、自适应延伸1、同功能内容延伸2、不同功能内容延伸或隐藏五、自适应折行一、布局简介自适应布局是通过设定元素与外部容器的相对关系实现的。当外部容器大小......
  • xe-utils 函数库使用示例
    xe-utils是一个功能丰富的JavaScript工具库,提供了大量的实用函数来简化常见的编程任务。它特别适用于与vxe-table(一个基于Vue.js的表格组件库)结合使用,但也可以独立应用于任何JavaScript项目中。安装xe-utils你可以通过npm或yarn安装xe-utils:npminstallxe-utils......
  • iStore网关(旁路由)模式设置教程
    OpenWrt网关(旁路由)模式设置教程本文是在帮助小白用户快速设置OpenWrt设备(如N1)为网关(旁路由)模式。通过以下步骤,你可以在三分钟内完成设置,让设备顺利上网。Step1:登录OpenWrt系统后台通过浏览器访问OpenWrt的管理界面,通常为192.168.1.1(如未更改过)。输入用户名......
  • js原型链理解示例
    a函数继承b函数,b函数继承c函数,那a函数的实例abc可以直接读取c函数的prototype属性吗?在JavaScript中,函数可以通过原型链继承其他函数的属性和方法。上面提到“a函数继承b函数,b函数继承c函数”,通常是指构造函数之间的继承关系,这涉及到原型链的层级结构。在这种情况下,a的实例可以......
  • OpenWRT配置旁路由/中继模式,同时配置作为NAS必备的IPv6公网IP
    1.环境和要达成的目标1.1目标主路由已配置好拨号,DHCP,IPv6已刷OpenWRT路由B70作为中继路由,提高覆盖,解决一些老旧只能设备接入问题。OpenWRT路由同时插入移动硬盘,配置WebDAV和smba作为NAS使用,所以此路自身要能获取到IPv6地址。我的OpenWRT路由是极路由4,刷的是最新的OpenWRT24......
  • 使用 Java 获取淘宝推荐商品列表 API 接口的示例代码解析
    在电商领域,推荐系统是提升用户体验和促进销售的重要工具。淘宝开放平台提供了taobao.item.recommend接口,允许开发者根据用户行为、搜索关键词或分类ID获取推荐商品列表。本文将详细介绍如何使用Java调用该接口,并解析返回的数据。一、淘宝推荐商品接口简介taobao.item.reco......
  • (2024最新毕设合集)基于SpringBoot的游乐园管理系统-69394|可做计算机毕业设计JAVA、PHP
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性2.1.2技术可行性2.1.3操作可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • php毕业设计基于php的摄影门户网站设计与实现
    一、项目技术开发语言:PHP框架:原生php/thinkphp5服务器:Apache数据库:mysql5.7数据库工具:Navicat11运行软件:小皮phpStudy浏览器:谷歌浏览器二、项目内容和功能介绍在当今数字化时代,摄影艺术蓬勃发展,摄影爱好者群体日益壮大,基于PHP的摄影门户网站为他们搭建了一个汇......
  • Vue2_了解核心概念和一个示例工程
    Vue2_了解核心概念和一个示例工程写文的目的是为了梳理知识,正如某一位面试官所说:会写并不牛,懂原理才牛下面开始:vue具有较好的可维护性和可测试性vue是一个渐进式框架(请忽略我这灵魂画手......