我的 parameters.ini 文件中存储了一个值,我需要在模型的 prepersist 方法期间访问它。
通常我使用$this->container->getParameter('value');
,但容器在实体中不可用。
有没有办法在实体类中获取参数?
PS 该值是我在 prepersist 期间从中提取信息的服务的 API 密钥。最佳做法是在 parameters.ini 中保留密钥/密码
我的 parameters.ini 文件中存储了一个值,我需要在模型的 prepersist 方法期间访问它。
通常我使用$this->container->getParameter('value');
,但容器在实体中不可用。
有没有办法在实体类中获取参数?
PS 该值是我在 prepersist 期间从中提取信息的服务的 API 密钥。最佳做法是在 parameters.ini 中保留密钥/密码
最佳实践是使用服务来持久化您的实体。当您调用服务方法时,这将注入容器并设置您的参数。updateMyEntity()
在您的控制器内部(或任何您想要的):
$user = new User('foo');
$user->setSomeProperty('bar');
$userService->update($user);
里面UserService
:
public function update(User $user) {
$user->setSomeParameter($this->container->getParameter('value'));
$this->em->persist($user);
}
除了弗洛伦特的回答之外,实体是纯粹的数据对象。他们不应该知道您的应用程序中的任何其他变量或服务。我更好奇为什么您的实体需要了解有关系统范围内的 API 密钥的任何信息。在背景信息很少的情况下,我会说你应该重新考虑你正在尝试做的事情。
您需要一个服务来与 API 交互,最好通过容器进行配置。我看不出这与实体有什么关系。