kamyshev / responder-bundle
此包已被废弃且不再维护。未建议任何替代包。
一个用于简化控制器返回任何类型数据并转换为响应的 Symfony Bundle
v1.0.1
2018-11-16 07:04 UTC
Requires
- php: ^7.1
- kamyshev/array_actions: ^1.1
- symfony/framework-bundle: ^4.1
- symfony/http-foundation: ^4.1
Requires (Dev)
- phpunit/phpunit: ^7.0
- symplify/easy-coding-standard: ^4.6
- vimeo/psalm: ^2.0
This package is auto-updated.
Last update: 2020-01-16 10:00:41 UTC
README
ResponderBundle
一个用于简化控制器返回任何类型数据并转换为响应的 Symfony Bundle
设置
要将此包添加到您的 composer.json 并安装,请执行以下命令
composer require kamyshev/responder-bundle
将 ResponderBundle 添加到您的应用程序
// config/bundles.php return [ // ... Kamyshev\ResponderBundle\ResponderBundle::class => ['all' => true], // ... ];
使用方法
添加新的响应器需要创建一个实现了 ResponderInterface 的类并为它定义一个服务。该接口定义了两个方法
supports()
— 此方法用于检查响应器是否支持给定的参数。只有当此方法返回 true 时,才会执行 make()。make()
— 此方法将为参数创建实际的响应。
这两个方法都接收 Result 对象和 ResultMetadata 实例。该对象包含从当前参数的方法签名中检索到的所有信息。
现在您知道该怎么做,可以实现此接口。从控制器动作返回 User
// src/Responder/UserResponder.php namespace App\Responder; use App\Entity\User; use Symfony\Component\HttpFoundation\Response; use Kamyshev\ResponderBundle\Responder\ResponderInterface; use Kamyshev\ResponderBundle\Responder\ResultMetadata; class UserResponder implements ResponderInterface { public function supports($user, ResultMetadata $meta): bool { return User::class === $meta->getType(); } public function make($user, ResultMetadata $meta): Response { return new Response($user->getName()); } }
这就完成了!现在您只需添加服务容器的配置。这可以通过为服务添加 kamyshev.responder
标签来完成。
# config/services.yaml
services:
_defaults:
# ... be sure autowiring is enabled
autowire: true
# ...
App\Responder\UserResponder:
tags: ['kamyshev.responder']
一切完成!您现在可以从控制器中返回 User 并在响应器中处理它。