【问题标题】:avoiding container strings in dependency injection in symfony在 symfony 中避免依赖注入中的容器字符串
【发布时间】:2015-06-11 13:26:56
【问题描述】:

symfony 和 php 的新手。我能够成功地定义一个服务并将理论实体管理器注入其中。它工作正常,但在初始化期间,我必须传递一个包含服务名称的字符串,如下所示:

    $eRep = $this->container->get('employee_repository');

这可以避免吗?这可以转换成更优雅的东西吗

   $eRep = $this->container->getEmployeeRepository();

服务定义为:

services:
employee_repository:
    class: AppBundle\Repository\EmployeeRepository
    arguments: [@doctrine.orm.entity_manager]               

为菜鸟问题道歉。 编辑

我可以访问另一个类中的服务容器,比如 EmployeeEnvelope 并调用如下:

class EmployeeEnvelope{

    public function getEmployeeRepository()
    {               
        return $this->container->get('employee_repository');
    } 
}

【问题讨论】:

    标签: php symfony dependency-injection


    【解决方案1】:

    如果您从控制器请求服务,您也可以将控制器设置为服务。然后,您可以使用依赖注入将员工存储库服务传递给它。

    这样你就不会在控制器中拥有字符串引用,而是在配置中。

    http://symfony.com/doc/current/cookbook/controller/service.html

    【讨论】:

    • 我可以访问通用 PHP 类中的容器吗?请检查我的编辑
    • 没有通用的方法来做到这一点。这不是一个好习惯。如果您的类实现了业务逻辑,您可以考虑将其作为服务并使用依赖注入为其提供所需的其他服务。否则,您可以在构造函数中或使用 set 方法将所需的员工实体传递给该类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    相关资源
    最近更新 更多