Symfony服务装饰,究竟意味着什么?

368yc8dk  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(106)

我是Symfony的新手。我读过关于服务装饰的文章,但我仍然不理解它。在Symfony中装饰服务实际上意味着什么?

xoshrz7s

xoshrz7s1#

在Symfony中,装饰器服务是服务容器配置中使用的一种设计模式,用于修改或扩展现有服务的行为,而无需修改其原始代码。
这里有一篇文章用一个例子解释了symfony装饰器。
https://medium.com/@rcsofttech85/decorator-services-in-symfony-045ed126ab10

lsmepo6l

lsmepo6l2#

在我看来,decoration是一个很棒的POO模式,它允许你改变(装饰)第三方的行为。在Symfony中,这对改变第三方服务(本质上是捆绑包)的行为很有用。
正如Cerad在评论中提到的,如果你不理解Symfony文档,你可能想从查找装饰模式开始。Symfony文档解释了如何使用它,但没有解释概念。
如果你正在寻找一个好的例子,我推荐你this Symfonycast tutorial:Ryan解释了他如何使用装饰模式来更改Api-Platform State Provider的行为。在本教程中,Ryan需要一个DTO资源,但原始项目提供程序返回一个实体。Ryan使用装饰模式来更改行为。由于services.yaml文件中的声明,Symfony将调用装饰器服务而不是原来的服务。在他的provide方法(装饰原来的方法)中,Ryan调用了原来的provide方法,但他没有返回Entity,而是将其Map到DTO资源,然后返回此结果。

相关问题