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

问题描述 投票:0回答:1

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

php dependency-injection autowired ioc-container nette
1个回答
0
投票

为了在 Nette 中自动装配服务以便于检索、使用,它们必须在 config.neon 配置中注册,或者必须是框架以多种方式默认预设的服务:

  • 在构造函数中指定和传递接口、类类型
    use App\Model; // or use App\Model\ArticleRepository;
    public function __construct(
        Model\ArticlesRepository $articlesRepository,
     ...
    )
    {
        $this->articlesRepository = $articlesRepository;
  • 通过@inject标签属性注释自动装配
    /** @var  \Nette\Http\Request @inject */ // however , this one is just example, the request service is already available in the presenters via $this->request attribute
    public $request;

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

© www.soinside.com 2019 - 2023. All rights reserved.