bake / bob
此包最新版本(dev-master)没有可用的许可信息。
非常基本的路由类
dev-master
2016-09-06 22:14 UTC
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-28 17:02:09 UTC
README
非常基本的路由类(约103行)...
tl;dr
Bob::get($pattern, $callback);
是
Bob::add('get', $pattern, $callback);
$method和$pattern可以是字符串或者字符串数组。$callback可以是一个或多个函数或者一个类。
Bob::go($file);
使用方法
路由
添加路由
Bob::get('/', function() { echo 'Hello World'; });
更多内容
Bob::get('/user/bob', function() { echo 'Hey, bob!'; });
添加多个模式
Bob::get(['/', '/home'], function() { echo 'Hello World'; });
使用函数
Bob::get('/user/:is_numeric', function($id) { echo 'Hello, '.$user[$id]; });
使用自定义函数
Bob::get('/user/:is_user', function($user) { echo 'Hey, '.$user.'!'; }); function is_user($user) { return in_array($user, ['Justus', 'Peter', 'Bob']); }
否定
Bob::get('/user/:is_user', function($user) { echo 'Hey, '.$user.'!'; }); Bob::get('/user/!is_user', function($user) { echo 'Can\'t find this user :('; });
您也可以使用正则表达式(与使用函数相同的方式)
Bob::$patterns = [ 'num' => '[0-9]+', 'all' => '.*' ]; Bob::get('/:num', function($id) { echo $id; });
回调
使用多个回调
Bob::get('/user/:is_numeric', [function($id) { echo 'Hello, '.$user[$id]; }, count_login($id)]);
多个请求方法
Bob::add(['post', 'put'], '/user', function() { // Add a user! Or something else! I don't care! });
类作为回调
您也可以使用类作为回调。只需传递其名称。Bob将尝试在$callback上执行$method,所以以下内容可以工作
class SayHello { static function get($num) { for($i = 0; $i < $num; $i++) echo 'GET Hello!'; } static function post($num) { for($i = 0; $i < $num; $i++) echo 'POST Hello!'; } }
Bob::add([], '/:is_numeric', 'SayHello');
注意,您必须使用Bob::add()并传入一个空数组。在这种情况下,您不需要告诉Bob接受的HTTP方法,它将仅在提供的类内部查找。
执行
使用上述的use-an-own-function-example,最终步骤可能如下所示
Bob::go();
或者 - 如果您想在子目录中工作 - 剪切请求URL
Bob::go('/foo/bar.php');
https:///foo/bar.php/user/1 => /user/1
如果没有找到内容
404:
Bob::summary(function($passed, $refused) { echo $passed.' routes passed, '.$refused.' were refused.'; });
如果没有任何规则匹配请求,则将仅执行回调
Bob::notfound(function($passed, $refused) { echo '404 :('; });
完成了。祝您愉快。