尝试进入 Laravel 依赖注入

尝试进入 Laravel 依赖注入插图1

<?php use App\Models\User;

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”模块及其覆盖代码的任何部分?

以上就是尝试进入 Laravel 依赖注入的详细内容,更多请关注至强加速其它相关文章!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/35499.html

(0)
上一篇 2024年8月21日
下一篇 2024年8月21日

相关推荐