Slim运用程序供应了一组挂钩,您可以在个中注书籍身的回调。
什么是钩子?
“挂钩”是Slim运用程序生命周期中的一个时候,在该时候将调用分配给挂钩的可调用优先级列表。钩子由字符串名称标识。

“可赎回”是什么,返回true了is_callable()。可调用分配给钩子,并在调用钩子时调用。如果为单个挂钩分配了多个可调用工具,则按指定的顺序调用每个可调用工具。
2.如何利用
利用Slim运用程序的hook()方法将一个callable分配给一个钩子:
<?php
$app = new \Slim\Slim();
$app->hook('the.hook.name', function () {
//Do something
});
第一个参数是钩子名称,第二个参数是可调用的。每个钩子都保持已注册的callables的优先级列表。默认情形下,分配给挂钩的每个可调用工具的优先级为10.您可以通过通报整数作为方法的第三个参数来为可调用工具供应不同的优先级hook():
<?php
$app = new \Slim\Slim();
$app->hook('the.hook.name', function () {
//Do something
}, 5);
上面的示例为可调用项分配优先级5。当调用钩子时,它将按优先级(升序)对分配给它的所有可调用工具进行排序。优先级为1的可调用工具将在优先级为10的可调用工具之前调用。
钩子不会将参数通报给他们的callables。如果callable须要访问Slim运用程序,您可以利用use关键字或Slim运用程序的静态getInstance()方法将运用程序注入回调:
<?php
$app = new \Slim\Slim();
$app->hook('the.hook.name', function () use ($app) {
// Do something
});
3.默认
这些是在Slim运用程序中始终调用的默认挂钩。
slim.before
在运行Slim运用程序之前和打开输出缓冲之前调用此挂钩。在Slim运用程序生命周期中,此挂钩将被调用一次。
slim.before.router
在打开输出缓冲之后和调度路由器之前调用此挂钩。在Slim运用程序生命周期中,此挂钩将被调用一次。
slim.before.dispatch
在调度当前匹配路由之前调用此挂接。常日这个钩子在Slim运用程序生命周期中只调用一次; 但是,如果匹配路由选择通报给后续匹配路由,则可以多次调用此挂钩。
slim.after.dispatch
在调度当前匹配路由后调用此挂接。常日这个钩子在Slim运用程序生命周期中只调用一次; 但是,如果匹配路由选择通报给后续匹配路由,则可以多次调用此挂钩。
slim.after.router
在调度路由器之后,在将相应发送到客户端之前以及关闭输出缓冲之后调用此挂接。在Slim运用程序生命周期中,此挂钩将被调用一次。
slim.after
关闭输出缓冲后和将相应发送到客户端后调用此挂钩。在Slim运用程序生命周期中,此挂钩将被调用一次。
4.Custom
可以在Slim运用程序中创建和调用自定义挂钩。当调用自定义钩子时applyHook(),它将调用分配给该钩子的所有可调用工具。这正是Slim运用程序的默认挂钩事情办法。在这个例子中,我运用了一个名为“my.hook.name”的自定义钩子。之前为此挂钩注册的所有可调用项都将被调用。
<?php
$app = new \Slim\Slim();
$app->applyHook('my.hook.name');
当您运行上面的代码时,先前分配给钩子“my.hook.name”的任何可调用项将按优先级顺序(升序)调用。
您该当在运用挂钩之前将callables注册到挂钩。可以这样想:当你调用Slim运用程序的applyHook()方法时,你哀求Slim调用已经为该钩子名称注册的所有callables。