How can i create middleware on Slim Framework 3?(如何在超薄框架3上创建中间件?)
本文介绍了如何在超薄框架3上创建中间件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我阅读了关于创建中间件的文档here。但是我必须使用哪个文件夹或文件来创建它呢?文档不包含此信息。
在src文件夹下,我有middleware.php
。
例如,我希望获得如下帖子信息:
$app->post('/search/{keywords}', function ($request, $response, $args) {
$data = $request->getParsedBody();
//Here is some codes connecting db etc...
return json_encode($query_response);
});
我是在routes.php下创建的,但我想为此创建类或中间件。我能做些什么?我必须使用哪个文件夹或文件。
推荐答案
Slim3不会将您绑定到特定的文件夹结构,但它确实(相反)假定您使用Composer并使用其中一个Psr文件夹结构。
就我个人而言,这就是我使用的(好吧,简化版本):
在我的索引文件/www/index.php:
include_once '../vendor/autoload.php';
$app = new MySlimApplication(include '../DI/services.php', '../config/slim-routes.php');
$app->run();
在/src/my/Slim/Application.php:
class Application extends SlimApp
{
function __construct($container, $routePath)
{
parent::__construct($container);
include $routePath;
$this->add(new ExampleMiddleWareToBeUsedGlobally());
}
}
我在DI/services.php中定义了所有依赖项注入,在config/slm-routes.php中定义了所有路由定义。请注意,由于我在应用程序构造函数中包含了路由,因此它们将使$this引用包含文件中的应用程序。
然后在DI/services.php中,您可以拥有类似
$container = new SlimContainer();
$container['HomeController'] = function ($container) {
return new MySlimControllerHomeController();
};
return $container;
在配置/slm-routes.php中类似
$this->get('/', 'HomeController:showHome'); //note the use of $this here, it refers to the Application class as stated above
最后是您的控制器/src/My/Slim/Controller/HomeController.php
class HomeController extends MySlimControllerAbstractController
{
function showHome(ServerRequestInterface $request, ResponseInterface $response)
{
return $response->getBody()->write('hello world');
}
}
另外,返回json的最佳方式是使用return $response->withJson($toReturn)
这篇关于如何在超薄框架3上创建中间件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在超薄框架3上创建中间件?
基础教程推荐
猜你喜欢
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01