我希望向 PHP 应用程序添加一些动态的 REST 式路由。我很想使用现有的路由库,这样我就不必重新发明轮子了。
然而,当我看到像 Slim 和 F3 这样的东西时,它们都带有我不想要的东西——比如模板和 MVC——包括在内。因为我只想要路由,所以我最终会在我的应用程序中得到很多我不需要的框架代码。
那里有一个只做路由的好图书馆吗?还是我坚持导入完整的框架或重新发明轮子?
我希望向 PHP 应用程序添加一些动态的 REST 式路由。我很想使用现有的路由库,这样我就不必重新发明轮子了。
然而,当我看到像 Slim 和 F3 这样的东西时,它们都带有我不想要的东西——比如模板和 MVC——包括在内。因为我只想要路由,所以我最终会在我的应用程序中得到很多我不需要的框架代码。
那里有一个只做路由的好图书馆吗?还是我坚持导入完整的框架或重新发明轮子?
试试克莱因:
单个文件,独立且健壮:
“klein.php 是适用于 PHP 5.3+ 的闪电般快速的路由器”
由于这个问题的答案很老,我认为在 OP 中提及一些更新的案例解决方案是一个不错的主意。
看到您的问题后,我想到的 2 个解决方案:
Phroute 建立在 FastRoute 之上,因此它们都需要 PHP 5.4。
如果你需要 PHP 5.3+ 的解决方案,我肯定会推荐 Slim Framework 的路由。如果您不想要框架附带的任何其他功能,您可以提取路由部分并仅使用它们(SLIM 已获得 MIT 许可,因此您可以做任何事情)
我已经在我的一个项目中单独使用了 slim 路由 - DaGhostman\CodeWave @ github,请参阅标签 <=2.4,相关部分在Application\Core
&中Application\Controller
。
尝试调度:https ://github.com/noodlehaus/dispatch
require 'dispatch.php';
get('/', function () {
echo "Hello world!\n";
});
dispatch();
它是 PHP 的单文件路由框架。重量很轻,很容易使用。这个和 Slim 是我的最爱。
我根本不需要一个成熟的框架。如果您需要 ORM,请尝试 Redbean。
如果您需要模板引擎,请使用 Twig。
使用这种方法,您只需安装您使用的内容。
Fastroute 是一个独立的路由库。它基于 OOP 模型并具有完整的测试框架。开源和许可是免费的。如果您正在为自己的项目寻找修改的东西,这是一个很好的起点。
PHP - 非常简单 路由器非常简单。
PHP – RegexRouter在我看来更好:)
查看 Pux ( https://github.com/c9s/Pux ),它的目标是极高性能、零依赖、零开销(支持 C 扩展)。在提供良好性能的同时,Pux 还提供了类似 Sinatra 的 API 供您定义自己的路由路径:
$mux = 新的 Pux\Mux; $mux->any('/product', ['ProductController','listAction']); $mux->get('/product/:id', ['ProductController','itemAction'] , [ '需要' => ['id' => '\d+', ], '默认' => ['id' => '1', ] ]); $mux->post('/product/:id', ['ProductController','updateAction'] , [ '需要' => ['id' => '\d+', ], '默认' => ['id' => '1', ] ]); $mux->delete('/product/:id', ['ProductController','deleteAction'] , [ '需要' => ['id' => '\d+', ], '默认' => ['id' => '1', ] ]); $route = $mux->dispatch('/product/1');
基准测试结果:
n=10000 运行 php 数组 - . 138796.45654569/s 运行 pux - 。124982.98519026/s 运行克莱因 - 。1801.5070399717/s 火腿肠——。13566.734991391/s 奔跑光环——。39657.986477172/s 运行 symfony/路由 - . 1934.2415677861/s Rate Mem php array pux aura ham symfony/routing klein php 数组 138.8K/s 0B ---90% -28% -9% -1% -1% 像素 124.98K/s 0B 111% -- -31%-10% -1% -1% 光环 39.66K/s 0B 349%315% ---34% -4% -4% 火腿 13.57K/s 0B 1023%921% 292% -- -14% -13% symfony/路由 1.93K/s 786K 7175%6461%2050%701% -- -93% 克莱因 1.8K/s 262K 7704%6937%2201%753% 107% -- =================================== 条形图============== ===================== php 数组 138.8K/s | ██████████████████████████████████████████████████ ██████████ | 像素 124.98K/s | ██████████████████████████████████████████████████ ████ | 光环 39.66K/s | █████████████████ | 火腿 13.57K/s | █████ | symfony/路由 1.93K/s | | 克莱因 1.8K/s | | =============================== 系统信息================== ============= PHP版本:5.5.6 CPU 品牌字符串:Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz 使用 XDebug 扩展。
Pux 尽量不消耗计算时间来动态构建所有路由(如 Symfony/Routing)。相反,Pux 将您的路由编译为普通的 PHP 数组进行缓存,编译后的路由可以非常快速地从缓存中加载。
借助 Pux PHP 扩展支持,您可以比纯 PHP Pux 快 1.5~2 倍地加载和调度路由。
看看锂框架的路由器类,因为大量使用依赖注入,你可以配置路由器类,通过调用config()