柚子以为,面对未知问题的求证过程应是:
- 首先,根据问题大量大胆猜测,幻想可能的答案。
- 然后,一步步精确的求证。不急功近利,不以偏概全,而应环环相扣,循序渐进。
- 之后,根据大量事实总结出客观规律。方可达到知其然且知其所以然。
通过文档可知,Slim包含三种中间件,应用程序中间件、路由中间件、中间件组等。
应用程序中间件示例,在index.php中:
$app->add(function ($request, $response, $next) {
$response->getBody()->write("11");
$response = $next($request, $response);
$response->getBody()->write('aa');
return $response;
});
class DeferredCallable
{
use CallableResolverAwareTrait;
private $callable;
/** @var ContainerInterface */
private $container;
/**
* DeferredMiddleware constructor.
* @param callable|string $callable
* @param ContainerInterface $container
*/
public function __construct($callable, ContainerInterface $container = null)
{
$this->callable = $callable;
$this->container = $container;
}
// 以调用函数的方式调用对象时,该魔术方法自动调用
public function __invoke()
{
$callable = $this->resolveCallable($this->callable);
if ($callable instanceof Closure) {
$callable = $callable->bindTo($this->container);
}
$args = func_get_args();
return call_user_func_array($callable, $args);
}
}