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 项目中,并开始使用其强大的路由功能。
热门项目推荐
相关项目推荐
- 国产编程语言蓝皮书《国产编程语言蓝皮书》-编委会工作区017
- nuttxApache NuttX is a mature, real-time embedded operating system (RTOS).C00
- qwerty-learner为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workersTSX027
- 每日精选项目🔥🔥 01.17日推荐:一个开源电子商务平台,模块化和 API 优先🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~026
- Cangjie-Examples本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie045
- 毕方Talon工具本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python039
- PDFMathTranslatePDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython05
- mybatis-plusmybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript0108
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
热门内容推荐
最新内容推荐
项目优选
收起
Python-100-Days
Python - 100天从新手到大师
Python
267
55
国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区
65
17
Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
196
45
openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
53
44
HarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
268
69
qwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
333
27
CangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
896
0
advanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
419
108
MateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。
官网地址:https://matechat.gitcode.com
144
24
HarmonyOS-Cangjie-Cases
参考 HarmonyOS-Cases/Cases,提供仓颉开发鸿蒙 NEXT 应用的案例集
Cangjie
58
4