degraciamathieu / laravel-rapid-bind
此包的最新版本(1.0.0)没有可用的许可信息。
使用注解快速轻松地在 Laravel 容器中创建单例
1.0.0
2024-06-25 06:59 UTC
Requires
- php: ^8.1
- composer/class-map-generator: ^1.3
- illuminate/contracts: 10.*|11.*
- illuminate/support: 10.*|11.*
Requires (Dev)
- orchestra/testbench: 8.*|9.1.*
- phpunit/phpunit: 10.*|11.1.*
README
laravel-rapid-bind
在基于端口和适配器的架构中,我们在接口和实现之间创建了大量的绑定。
通常,这些绑定很简单,不需要额外的配置。
该包简化了这些绑定的创建,帮助您避免在 AppServiceProvider
中造成混乱。
安装
需要 >= PHP 8.1
composer require degraciamathieu/laravel-rapid-bind
用法
提供包含接口的文件夹信息
<?php namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * Register any application services. */ public function register(): void { RapidBind::bind([ '../app/Domain/Ports/Repositories', ]); } /** * Bootstrap any application services. */ public function boot(): void { // } }
现在,在端口上添加 Bind 注解,并使用关联适配器的 FQCN 作为值
<?php namespace App\Domain\Ports\Repositories; use DeGraciaMathieu\RapidBind\Bind; use App\Infrastructure\Repositories\UserRepositoryAdapter; #[Bind(UserRepositoryAdapter::class)] interface UserRepository { // }
<?php namespace App\Infrastructure\Repositories; use App\Domain\Ports\Repositories\UserRepository; class UserRepositoryAdapter implements UserRepository { // }
从现在开始,端口和适配器之间已自动创建单例!
$userRepository = app(UserRepository::class); dd($userRepository); // App\Infrastructure\Repositories\UserRepositoryAdapter