如何从di依赖注入容器上下文中自动连接(自动连接)/获取nette中的服务

如何从容器自动部署Nette服务,以便在演示者(控制器)或模型等内部使用?


解决方案

若要自动布线Nette中的服务以便于检索和使用,它们必须在配置.neon配置中注册,或者必须是框架以多种方式默认设置的服务:

  • 在构造函数中指定和传递接口、类类型
    use AppModel; // or use AppModelArticleRepository;
    public function __construct(
        ModelArticlesRepository $articlesRepository,
     ...
    )
    {
        $this->articlesRepository = $articlesRepository;
  • 通过@Inject标记属性注释进行自动装配
    /** @var  NetteHttpRequest @inject */ // however , this one is just example, the request service is already available in the presenters via $this->request attribute
    public $request;

所有可用服务的列表,包括那些在配置中配置的服务,以及那些默认预定义的服务,都可以在Nette Tracy Debugger栏的同一位置看到-&>DIC(依赖项注入容器)按钮

相关文章