卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章73907本站已运行433

尝试进入 Laravel 依赖注入

尝试进入 laravel 依赖注入

<?php use AppModelsUser;

test('Action', function () {

    app()->singleton(ClassInterface::class, T1Impl::class);
    $out1 = app(ClassInterface::class)();
    $this-&gt;assertEquals("T1?", $out1);

    app()-&gt;bind(ClassInterface::class, T2Impl::class);

    $out2 = app(ClassInterface::class)();
    $this-&gt;assertEquals("T2!", $out2);

    app()-&gt;bind(T1Impl::class, T2Impl::class);
    $out3 = app(T1Impl::class)();
    $this-&gt;assertEquals("T2!", $out3);



    app()-&gt;bind(T2Impl::class, T3Impl::class);
    app()-&gt;bind(T1Impl::class, T2Impl::class);
    app()-&gt;singleton(ClassInterface::class, T1Impl::class);
    $out4 = app(ClassInterface::class)();
    $this-&gt;assertEquals("T3!", $out4);


    $user = User::factory()-&gt;create(['name'=&gt;'Tomas']);
    $out5 = app(T4::class, ['user'=&gt;$user])();
    $this-&gt;assertEquals("Tomas", $out5);
});

interface ClassInterface {
    public function __invoke();
}

class T1Impl implements ClassInterface {
    public function __invoke() {
        return "T1?";
    }
}

class T2Impl implements ClassInterface {
    public function __invoke() {
        return "T2!";
    }
}


class T3Impl implements ClassInterface {
    public function __invoke() {
        return "T3!";
    }
}

class T4 {
    public function __construct(
        public User $user
    ){}

    public function __invoke() {
        return $this-&gt;user-&gt;name;
    }
}

并且..这意味着如果我“正确”地执行laravel,它可以让我删除“nwidard/larave-modules”模块及其覆盖代码的任何部分?

卓越飞翔博客
上一篇: Golang 框架针对的特定人群有哪些?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏