Last active
August 11, 2024 15:29
-
-
Save blinkinglight/06c77067b87d567ce86d422c350f0f27 to your computer and use it in GitHub Desktop.
laravel test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment