Toro PHP 路由器技术文档
2024-12-11 19:37:03作者:宗隆裙
1. 安装指南
1.1 手动安装
- 从 GitHub 仓库 下载最新版本的 Toro。
- 将
Toro.php
文件移动到你的项目根目录。
1.2 使用 Composer 安装
-
在你的项目根目录下安装 Composer:
$ curl -s https://getcomposer.org/installer | php
或者手动下载并检查安装脚本的安全性:
$ curl -s https://getcomposer.org/installer > installer.php $ less installer.php $ # 确认安全后执行 $ php installer.php
-
创建
composer.json
文件,内容如下:{ "require": { "torophp/torophp": "dev-master" } }
-
使用 Composer 安装 Toro:
$ php composer.phar install
1.3 服务器配置
1.3.1 Apache 配置
在 Apache 的虚拟主机配置或 .htaccess
文件中添加以下内容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /index.php/$1 [L]
或者使用以下单行配置(适用于 Apache 2.2.15 及以上版本):
FallbackResource /index.php
1.3.2 IIS 配置
安装 URL Rewrite for IIS 后,在 web.config
文件中添加以下规则:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rule name="Toro" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{R:1}" pattern="^(index\.php)" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/index.php/{R:1}" />
</rule>
</rewrite>
</system.webServer>
</configuration>
1.3.3 Nginx 配置
在 Nginx 的虚拟主机配置中添加以下内容:
location / {
try_files $uri $uri/ /index.php?$args;
}
2. 项目的使用说明
2.1 基本路由
Toro 使用简单的路由机制来处理请求。路由表是一个关联数组,格式为 route_pattern => handler
。例如:
Toro::serve(array(
"/" => "SplashHandler",
"/catalog/page/:number" => "CatalogHandler",
"/product/:alpha" => "ProductHandler",
"/manufacturer/:string" => "ManufacturerHandler"
));
2.2 RESTful 处理器
Toro 支持 RESTful 风格的处理器,自动根据 HTTP 请求方法调用相应的方法。例如:
class ExampleHandler {
function get() {}
function post() {}
function get_xhr() {}
function post_xhr() {}
}
2.3 ToroHook (回调)
Toro 提供了五个特定的回调钩子,用于在请求的不同阶段执行自定义逻辑:
ToroHook::add("404", function() {});
ToroHook::add("before_request", function() {});
ToroHook::add("before_handler", function() {});
ToroHook::add("after_handler", function() {});
ToroHook::add("after_request", function() {});
3. 项目 API 使用文档
3.1 Toro::serve()
Toro::serve()
是 Toro 的核心方法,用于注册路由和处理器。
Toro::serve(array(
"/" => "SplashHandler",
"/catalog/page/:number" => "CatalogHandler",
"/product/:alpha" => "ProductHandler",
"/manufacturer/:string" => "ManufacturerHandler"
));
3.2 ToroHook::add()
ToroHook::add()
用于注册回调钩子。
ToroHook::add("404", function() {
echo "Page not found";
});
4. 项目安装方式
Toro 可以通过手动下载或使用 Composer 进行安装。手动安装需要将 Toro.php
文件放置在项目根目录,而 Composer 安装则需要创建 composer.json
文件并执行安装命令。
4.1 手动安装
- 下载
Toro.php
文件。 - 将文件放置在项目根目录。
4.2 Composer 安装
- 安装 Composer。
- 创建
composer.json
文件。 - 执行
php composer.phar install
命令。
通过以上步骤,你可以轻松地将 Toro 集成到你的 PHP 项目中,并开始使用其强大的路由功能。
热门项目推荐
相关项目推荐
鸿蒙开发工具大赶集
本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。012hertz
Go 微服务 HTTP 框架,具有高易用性、高性能、高扩展性等特点。Go01每日精选项目
🔥🔥 每日精选已经升级为:【行业动态】,快去首页看看吧,后续都在【首页 - 行业动态】内更新,多条更新哦~🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~029kitex
Go 微服务 RPC 框架,具有高性能、强可扩展的特点。Go00Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie057毕方Talon工具
本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python040PDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06mybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区018- DDeepSeek-R1探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此简介由AI生成】Python00
热门内容推荐
最新内容推荐
项目优选
收起

Python - 100天从新手到大师
Python
610
115

本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
286
79

✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、色盘取色、多图上传、一键下载文档、自定义 CSS 样式、一键重置等特性
Vue
111
25

旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
60
48

🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
45
29

🦄🦄🦄AI赋能股票分析:自选股行情获取,成本盈亏展示,涨跌报警推送,市场整体/个股情绪分析,K线技术指标分析等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。
Go
1
0

本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
205
57

前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。
官网地址:https://matechat.gitcode.com
376
36

🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
182
44

这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。
Java
8
0