__在Symfony中调用

时间:2019-03-07 20:28:22

标签: symfony dependency-injection

我想将我的代码库拆分为简单的一类特定于目的的类,

class AddKeyword
{
    /**
     * @var KeywordRepository
     */
    private $keywordRepository;

    public function __construct(KeywordRepository $keywordRepository)
    {
        $this->keywordRepository = $keywordRepository;
    }

    public function __invoke(string $name): Keyword
    {
        $entity = $this->keywordRepository->findOneByName($name);

        if ($entity)
            return $entity;

        $entity = Keyword::create(KeywordId::create(), $name);
        $this->keywordRepository->save($entity);

        return $entity;
    }
}

但是对于使用该类,我必须解析DI。怎么做?

谢谢。

1 个答案:

答案 0 :(得分:0)

不确定要实现的目标,但是如果要在代码库中的任何位置添加/获取关键字,则有两种选择:

  • 使用自动装配
  • 将您的类声明为服务,并从容器中获取它。

Symfony通过自动装配来鼓励DI。

namespace App\Controller;

use App\AddKeyword;

class DefaultController
{
    public function __construct(Addkeyword $keyword) {
        $keyword('keyword');
    }

}