【发布时间】:2014-11-18 08:37:18
【问题描述】:
我没有在 Google 或 Stackoverflow 上找到类似的问题/解决方案,所以我在这里,需要帮助。 我正在将 PHP 项目从自定义框架移植到 Symfony 框架(v2.5),该框架具有自定义依赖注入(基于类反射)。许多业务逻辑类都注入了属性,我很感兴趣是否有办法在 Symfony 中做类似的事情而不将这些类声明为服务,因为一些类用于临时保存/操作来自 3rd 方端点的内容和我需要它们的不同实例。
更准确地说,有一种方法可以将依赖注入与使用 new 关键字的实例化对象结合使用。因此,如果我需要一个依赖于记录器或验证器的新类,我该如何做这样的事情。
我要解决依赖注入的内容类:
class Content extends SomeObject
{
private $pictureUrl;
...
public __construct(array $array = null)
{
parent::__construct($array);
}
public setPicture(...\Picture $picture)
{
// what's the best way to inject/enable this into my class
$errors = $this->get('validator')->validate($picture->getUrl());
...
$this->pictureUrl = $picture->getUrl();
}
...
}
实例化前一个类的类(在这种特殊情况下,这可能是一个服务,但在其他情况下,这是另一个与业务逻辑相关的类):
class EndpointService extends Service
{
...
public fetchContent()
{
$dataArray = $this->endpoint->fetch();
$contentArray = array();
foreach ($dataArray as $key => $value) {
$content = new Content(array());
$content->setPicture($value->picture);
...
$contentArray[$key] = $content;
}
}
...
}
注意:如果有逻辑/语法错误,请忽略它们,这是我演示问题的示例,与我的代码库相距甚远。
【问题讨论】:
标签: php symfony dependency-injection