Php 在Symfony2服务中注入特定的条令实体
我当前正在服务中使用具有特定ID的实体。为了使用依赖项注入实现这一点,我正在注入实体存储库和特定ID。例如:Php 在Symfony2服务中注入特定的条令实体,php,symfony,dependency-injection,doctrine-orm,Php,Symfony,Dependency Injection,Doctrine Orm,我当前正在服务中使用具有特定ID的实体。为了使用依赖项注入实现这一点,我正在注入实体存储库和特定ID。例如: public function __construct($myRepo, $myId) { $this->myEntity = $myRepo->find($myId); } 有没有一种方法可以直接注入这个特定的实体而不传入存储库?例如,理想的方法是: public function __construct($myEntity) { $this->my
public function __construct($myRepo, $myId) {
$this->myEntity = $myRepo->find($myId);
}
有没有一种方法可以直接注入这个特定的实体而不传入存储库?例如,理想的方法是:
public function __construct($myEntity) {
$this->myEntity = $myEntity;
}
我不知道如何定义执行此操作所需的服务。服务应该是无状态的。在服务中保存具有特定id的用户会使其处于状态
应该将实体传递给调用的方法,而不是在构造函数中传递实体并将其保存在属性中。例如,不应将带有
to
地址的邮件程序传递给构造函数,而应将其传递给mailer\mail()
方法。服务应是无状态的。在服务中保存具有特定id的用户会使其处于状态
应该将实体传递给调用的方法,而不是在构造函数中传递实体并将其保存在属性中。例如,不应将带有
to
地址的邮件程序传递到构造函数中,而应将其传递到mailer\mail()
方法。@Wouter很好地说明了服务是无状态的。但是,您可以使用DI factory功能来实现您的目标:
specific_entity:
class: SomeEntity # Not used but you still need something here
factory_service: specific_entity_repository
factory_method: find
arguments:
- 42
这将调用存储库上的find方法,参数为42。然后将注入返回的实体。我假设您已经知道如何将存储库设置为服务。@Wouter很好地说明了服务是无状态的。但是,您可以使用DI factory功能来实现您的目标:
specific_entity:
class: SomeEntity # Not used but you still need something here
factory_service: specific_entity_repository
factory_method: find
arguments:
- 42
这将调用存储库上的find方法,参数为42。然后将注入返回的实体。我假设您已经知道如何将存储库设置为服务。非常好,让它们保持无状态是有意义的。但是,我不确定如何将我需要的特定实体注入到使用它的方法中,因为它是一个受保护的方法。。。把它传给那个地方我想我没跟着你。该方法是从服务内部调用的,因此为了将其传递给该方法,服务需要了解它。非常好,保持它们无状态是有意义的。但是,我不确定如何将我需要的特定实体注入到使用它的方法中,因为它是一个受保护的方法。。。把它传给那个地方我想我没跟着你。该方法是从服务内部调用的,因此为了将其传递给该方法,服务需要了解它。