tcdev / macaw
v1.0.0
2023-10-25 12:33 UTC
Requires
- php: >=5.3.3
This package is auto-updated.
Last update: 2024-09-25 16:41:06 UTC
README
Macaw是一个简单、开源的PHP路由器。它非常小巧(~150行代码),速度快,并且拥有一些优秀的注释源代码。这个类允许你将其直接放入你的项目中并立即开始使用。
安装
如果你有Composer,只需在composer.json
中将Macaw作为项目依赖项即可。如果没有,你可以通过下载.ZIP文件并将其解压缩到你的项目目录中安装。
require: {
"marcfowler/macaw": "dev-master"
}
示例
首先,使用Macaw命名空间
use \marcfowler\macaw\Macaw;
Macaw不是对象,因此你可以直接对该类进行操作。以下是Hello World示例
Macaw::get('/', function() { echo 'Hello world!'; }); Macaw::dispatch();
你可以指定一个前缀,该前缀将被添加到所有路由中。如果你知道你正在运行的URL不是由执行目录定义的,这非常有用,以防止重复。例如,如果你知道你的文件被访问在/subfolder/somewhere-else/
,你可以
Macaw::setPrefix('/subfolder/somewhere-else/'); Macaw::get('/', function() { echo 'Hello!'; });
Macaw还支持lambda URI,例如
Macaw::get('/(:any)', function($slug) { echo 'The slug is: ' . $slug; }); Macaw::dispatch();
你还可以在Macaw中对HTTP方法进行请求,所以你还可以做
Macaw::get('/', function() { echo 'I <3 GET commands!'; }); Macaw::post('/', function() { echo 'I <3 POST commands!'; }); Macaw::dispatch();
你可能想在找到匹配的路由后停止执行。在下面的代码中没有调用haltOnMatch()
,如果你请求了/
,你会看到'Hello world!' 和 'I am further execution...'都被显示出来。为了防止这种情况,只需添加以下行
Macaw::haltOnMatch(true); // This will prevent further execution once a match is found Macaw::get('/', function() { echo 'Hello world!'; }); Macaw::dispatch(); echo 'I am further execution...';
如果你需要覆盖用于此请求的HTTP方法,你可以设置它
Macaw::setMethod('POST');
最后,如果某个位置没有定义路由,你可以让Macaw运行一个自定义回调,如下
Macaw::error(function() { echo '404 :: Not Found'; });
如果你没有指定错误回调,Macaw会简单地echo404
。
为了让服务器知道URI不指向一个真实文件,你可能需要使用以下示例之一配置文件。