【发布时间】:2014-01-06 09:03:09
【问题描述】:
我想验证我自己的包中的几个参数。注入验证器服务很容易,但似乎我仍然必须“使用”约束类。
有没有办法避免硬编码约束依赖?
【问题讨论】:
-
什么意思?您能否向我们展示与该问题相关的代码?您的预期行为是什么?
-
你能举个例子说明你想要达到的目标吗?
-
假设 $validator 是我们注入的验证器。然后验证价值我需要做这样的事情: $validator->validateValue('Moo', new Email());其中 Email 是 'Symfony\Component\Validator\Constraints\' 名称路径中的类。但要这样做,我将不得不将确切的名称路径硬编码到我的服务中,从而不仅将其耦合到框架,而且实际在当前版本中实现。
-
是的,你的应用程序对
Validator组件有一个依赖,这似乎不是问题。如果你不想“硬编码”类名,你可能想创建一个Acme\Validator\Validation\EmailInterface,任何电子邮件验证器都应该实现它以便与你的应用程序一起工作。但同样,我不明白你为什么需要这个。 -
因为我真的不依赖特定的验证器。我的代码基本上接受任何具有 validateValue 方法的验证器。路径硬编码是不一样的——因为如果,例如 Symfony 将决定将一些验证器移动到另一个命名空间(这已经发生)——我的代码将会中断。
标签: validation symfony dependency-injection constraints