php轻量级路由,Klein.php - 轻量级PHP路由库

2024-01-12 18:20
文章标签 php 路由 轻量级 klein

本文主要是介绍php轻量级路由,Klein.php - 轻量级PHP路由库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

只想简单的做个带几个路由的服务,用 php 框架就有点大题小作了。Klein.php,这个轻量级的路由库,此时是一个不错的选择。

00e1d57d3d520c2901ecf8c83eba6bf6.png

Klein.php

简介

Klein.php,是 klein 组织在 Github 上开源的 PHP 路由库,代码仓库在

https://github.com/klein/klein.php,目前版本为 2.1.2。Klein 十分灵活,使用正则表达式进行路由匹配;接口简单,方便快速上手开发;性能优秀,每秒可处理 2500+ 请求。

9a11478275e7636981707afb05b25ada.png

Klein.php

安装

Klein 需要 PHP 5.3.x,使用 Composer 进行安装:

php composer.phar require klein/klein

并在主 PHP 文件中加入 autoload:

require 'vendor/autoload.php';

示例

Klein 的使用十分简单,以下是一个 Hello World 例子:

require_once __DIR__ . '/vendor/autoload.php';

$klein = new KleinKlein();

$klein->respond('GET', '/hello-world', function () {

return 'Hello World!';

});

$klein->dispatch();

使用 respond 注册路由处理方法,并使用 dispatch 运行路由。

Klein 对于路由匹配使用可带命名参数的正则表达式进行,而解析得到的参数可以通过 $request 参数获得:

$klein->respond('/[:name]', function ($request) {

return 'Hello ' . $request->name;

});

下面再看一些更加复杂的例子:

/posts/[*:title][i:id] // 匹配 /posts/this-is-a-title-123

/output.[xml|json:format]? // 匹配 /output,/output.xml 和 /output.json

/[:controller]?/[:action]? // 匹配可选的 /controller/action 格式

也可以同时匹配多种请求方法,通过传递 array 实现:

$klein->respond(array('POST','GET'), $route, $callback);

对于文件上传,klein 通过回调的 $service 参数接收;而对于发送文件,则可以使用 $response 的 send 或 file 实现:

$klein->respond(function ($request, $response, $service) {

$service->xml = function ($object) {

// 处理XML文件

}

$service->csv = function ($object) {

// 处理CSV文件

}

});

$klein->respond('/report.[xml|csv|json:format]?', function ($request, $response, $service) {

$send = $request->param('format', 'json');

$response->$send($report); // 通过send返回对象

});

$klein->respond('/report/latest', function ($request, $response, $service) {

$response->file('/tmp/cached_report.zip'); // 通过file返回文件路径的文件

});

更多

Klein 支持路由组,可以在同一路由下定义不同的子路由以形成不同的路由命名空间。

$klein->with('/users', function () use ($klein) {

$klein->respond('GET', '/?', function ($request, $response) {

// 用户列表

});

$klein->respond('GET', '/[:id]', function ($request, $response) {

// 获取单个用户

});

});

Klein 支持服务的惰性存储,可以在首次使用时才初始化。

Klein 支持参数验证,可自定义验证方法。

$service->validateParam('key')->isHex();

$service->validate($username)->isLen(4,16);

$service->validateParam('key', 'The key was invalid')->isHex()->isLen(32);

Klein 支持对 Phtml 的带参数渲染。

$service->render('myview.phtml', array('title' => 'My View'));

918e7bd01840aa8bd1a46107930e8d3a.png

Klein.php

总结

Klein.php 作为一个轻量的 PHP 路由库,具备了进行微型 Web 服务应用开发的能力;其基于正则的路由匹配方法自由灵活,方便使用;接口简洁明了,易于上手使用。

Klein.php 项目结构清晰,代码注释和文档丰富,单元测试完备,同时代码量不大,代码质量较高,是一个值得学习的PHP库。

这篇关于php轻量级路由,Klein.php - 轻量级PHP路由库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/598758

相关文章

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War