Trying to get into laravel dependency injection

<?php

use App\Models\User;

test(‘Action’, function () {

app()->singleton(ClassInterface::class, T1Impl::class);
$out1 = app(ClassInterface::class)();
$this->assertEquals(“T1?”, $out1);

app()->bind(ClassInterface::class,…


This content originally appeared on DEV Community and was authored by M

<?php

use App\Models\User;

test('Action', function () {

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

    app()->bind(ClassInterface::class, T2Impl::class);

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

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



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


    $user = User::factory()->create(['name'=>'Tomas']);
    $out5 = app(T4::class, ['user'=>$user])();
    $this->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->user->name;
    }
}

And.. That means if I will do laravel "right", it lets me to drop "nwidard/larave-modules" Module and its overrides any part of code ?


This content originally appeared on DEV Community and was authored by M


Print Share Comment Cite Upload Translate Updates
APA

M | Sciencx (2024-08-11T15:36:53+00:00) Trying to get into laravel dependency injection. Retrieved from https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/

MLA
" » Trying to get into laravel dependency injection." M | Sciencx - Sunday August 11, 2024, https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/
HARVARD
M | Sciencx Sunday August 11, 2024 » Trying to get into laravel dependency injection., viewed ,<https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/>
VANCOUVER
M | Sciencx - » Trying to get into laravel dependency injection. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/
CHICAGO
" » Trying to get into laravel dependency injection." M | Sciencx - Accessed . https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/
IEEE
" » Trying to get into laravel dependency injection." M | Sciencx [Online]. Available: https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/. [Accessed: ]
rf:citation
» Trying to get into laravel dependency injection | M | Sciencx | https://www.scien.cx/2024/08/11/trying-to-get-into-laravel-dependency-injection/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.