Github:https://github.com/takashiki/cdo
Git@OSC:http://git.oschina.net/takashiki/cdo
使用很简单,不过只支持 pathinfo 模式,贴一段示例代码:
$do = new \Mis\Cdo();
$do->get('/', function () {
echo 'hello world';
});
$do->post('/', function () {
$name = isset($_POST['name']) ? $_POST['name'] : 'world';
echo "hello {$name}";
});
$do->any('/(\d+)', function ($id) {
echo $id;
});
/**
* When using named subpattern, order of parameters is not matter.
* eg. /book/2
*/
$do->any('/(?P<type>\w+)/(?P<page>\d+)', function ($page, $type) {
echo $type.'<br>'.$page;
});
$do->run();
或者:
use Mis\Cdo;
Cdo::get('/', function () {
echo 'hello world';
});
Cdo::run();
写这个项目的初衷是前断时间在写一个小项目时发现现在绝大多数 PHP 的路由都不足够轻量,在只有各位数的路由时 QPS 也只能达到不使用路由时的一半左右,于是便自己写了一个,欢迎大家批评指教。
这是在 index 文件里直接打印 hello world
的 qps:
这是使用了路由后的qps:
1
BMW 2016-07-02 22:56:48 +08:00
|
2
manhere 2016-07-02 23:02:43 +08:00
在用 FastRoute
|
3
likezun 2016-07-02 23:09:48 +08:00
造轮子...
|
4
kumakiti 2016-07-02 23:23:56 +08:00
很棒,特别好的学习资料~
|
5
fhefh 2016-07-03 10:51:01 +08:00
nice mark~~~
|
6
void1900 2016-07-03 10:55:21 +08:00
|
7
102400 2016-07-03 17:19:47 +08:00
几乎所有这种形式的路由都是学习 Sinatra 的吧?
|
8
sensui7 2016-07-03 17:32:19 +08:00
一楼的 symfony router,醉了,
|
9
takashiki OP |
10
muyege 2016-07-04 09:31:32 +08:00
https://github.com/noahbuscher/Macaw
一个文件就搞定了,目前能找到的最简单的了 |
11
jinzhe 2016-07-04 14:13:05 +08:00
真心不够优雅
|
12
ichou 2016-07-05 09:15:42 +08:00 via iPhone
没有实现通配符而使用正则来写路由规则的话,代码可读性不忍直视
|
13
JiaFeiX 2016-07-05 09:56:05 +08:00 via iPhone
要性能的话,不是写在 nginx 层面来实现吗?
|
14
pangliang 2016-07-07 15:48:15 +08:00
真正简单的就是:"约定大于配置"
|
15
pangliang 2016-07-07 16:16:00 +08:00
盲写一个:
list($_,$cls,$func)=explode("/",$_SERVER['REQUEST_URI'],3); include_once($cls.".php"); $obj=new $cls(); $obj->$func($_REQUEST); |