paymaxi / fractal-bundle
此包已被弃用且不再维护。未建议替代包。
League 开发的用于 Fractal 的 Symfony2 扩展包。实现将依赖注入到您的转换器中。
v1.0.4
2018-02-19 14:20 UTC
Requires
- php: >=7.1
- league/fractal: ^0.16
- paymaxi/compiler: ^0.1
- symfony/framework-bundle: ^2.7|^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^5.6
This package is not auto-updated.
Last update: 2023-03-09 11:01:45 UTC
README
此包提供了对 league/fractal 的集成,用于 Symfony。此外,它允许您将转换器作为服务使用。
入门
首先,您需要将依赖项添加到 composer.json 文件中
composer require paymaxi/fractal-bundle
然后,在 app/AppKernel.php
文件中注册此包
public function registerBundles() { return [ // ... new Paymaxi\FractalBundle\PaymaxiFractalBundle(), ]; }
现在我们可以编写和使用 fractal 转换器了
将转换器作为服务使用
在需要将某些依赖项传递到转换器的情况下,有几种情况。一个常见的情况是在转换器中基于角色/范围的结果,例如,您可能只想向管理员或用户资料的所有者显示 email
字段。
class UserTransformer extends TransformerAbstract { private $authorizationCheker; public function __construct(AuthorizationChecker $authorizationCheker) { $this->authorizationCheker = $authorizationCheker; } public function transform(User $user) { $data = [ 'id' => $user->id(), 'name' => $user->name(), ]; if ($this->authorizationChecker->isGranted(UserVoter::SEE_EMAIL, $user)) { $data['email'] = $user->email(); } return $data; } }
然后,您可以仅将此类注册为服务,并将服务 ID 作为转换器传递。此包将尝试从容器中获取它
$resource = new Collection($users, 'app.transformer.user');
这同样适用于 includes
public function includeFriends(User $user) { return $this->collection($user->friends(), 'app.transformer.user'); }
您可以在 示例应用程序 中查看如何使用转换器的示例,该应用程序用于测试套件。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。