首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否以正确的方式使用Auraphp进行依赖注入?

我是否以正确的方式使用Auraphp进行依赖注入?
EN

Stack Overflow用户
提问于 2019-12-05 02:48:56
回答 1查看 48关注 0票数 0

我开始使用Auraphp进行依赖注入,并编写了一个示例应用程序。它正如期而至,但是,我不确定我是否正确地使用它。有人能让我知道我做得对吗,或者有没有更好的方法使用灵气?

这是我的public/index.php:

代码语言:javascript
复制
use Aura\Di\ContainerBuilder;
use MyPackage\Base\Service;
use MyPackage\Base\Flow;

require_once dirname(__DIR__) . '/vendor/autoload.php';

$builder = new ContainerBuilder();
$di = $builder->newInstance();

$di->set('baseService', new Service);
$di->set('baseFlow', new Flow);

$service = $di->get('baseService');
$flow = $di->get('baseFlow');

$service->showMessage();
$flow->showMessage();

这是src/Service.php (src/Flow.php类似):

代码语言:javascript
复制
<?php

namespace MyPackage\Base;

class Service
{
    public function showMessage()
    {
        echo "Inside service";
    }
}

我主要想知道我是否受益于依赖注入的优势。此外,使用Aura这种方式不是内存/CPU/时间重载吗?

任何想法都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-07 17:44:20

代码语言:javascript
复制
$di->set('baseService', new Service);
$di->set('baseFlow', new Flow);

在本例中,您已经在实例化类。但在大多数情况下,您可以使用延迟加载。在这种方法中,插入所需的必要依赖关系也会使您受益。所以你的代码会变成

代码语言:javascript
复制
$di->set('baseService', $di->lazyNew('Service'));
$di->set('baseFlow', $di->lazyNew('Flow'));

示例摘自:http://auraphp.com/packages/3.x/Di/services.html

假设您的Flow类有一些依赖项,您可以通过构造器注入整定器注入来完成。

代码语言:javascript
复制
class Flow
{
    public function __construct(Service $service)
    {
         $this->service = $service;
    }

    public function setSomething(Something $something)
    {
        // other dependency
    }

    public function showMessage()
    {
        echo "Inside service";
    }
}

现在你可以定义

代码语言:javascript
复制
$di->params['Flow']['service'] = $di->lazyNew('Service');
$di->setters['Flow']['setSomething'] = $di->lazyNew('Something');

您可以看到更多的文档中的示例。DI有时会觉得神奇,但如果你正确理解它,它将帮助您快速调试。

我注意到有人不喜欢答案。你可以自由地去做,但是提供一个更好的答案或者编辑答案,或者写一些可以改进的注释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59187471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档