Symfony容器,注册方法与setdefinition

时间:2018-12-24 17:04:08

标签: symfony dependency-injection

这2种不同但方法具有相同含义的意义何在? 1应该用于不同的地方还是什么?

此刻,我已经看过knpuniversity视频,并学会了通过setdefinition(配置中的新定义方式)来做到这一点。

public function register($id, $class = null)
{
    return $this->setDefinition($id, new Definition($class));
}

1 个答案:

答案 0 :(得分:1)

这只是语法糖。在Symfony中,通常有三种方法可以做一件事情。

  1. 第一个是完成工作

    $this->register('SomeClass')
    
  2. 第二个清晰而直接的

    $this->setDefinition('SomeClass', new Definition('SomeClass'));
    
  3. 第三项允许您做复杂的事情。

我喜欢第一个,因为它通常最终会导致更简单的方式。

# services.yaml
services:
    App\:
        resource: ../src

这将注册/src目录中的所有服务