bake/bob

此包最新版本(dev-master)没有可用的许可信息。

非常基本的路由类

dev-master 2016-09-06 22:14 UTC

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 :(';
});

完成了。祝您愉快。