1
ルーメンに依存性注入を使用する構造を構築しようとしています。Laravelで依存関係を自動挿入する方法
私はサービスレイヤとリポジトリレイヤを持っています。
サービスレイヤにリポジトリレイヤを挿入したいと思います。コードを表示しようとしましょう
interface IUserRepostitory {
public function getByID($id);
}
class UserRepository extends BaseRepository implements IRepository{
public function getByID($id) {
//Please don't think how this function works, my question about dependency injection
return $this->findOrFail($id);
}
}
interface IService {
public function getByID($id);
}
class UserService implements IService{
private $Repository;
public __construct(IUserRepositor $UserRepository) {
$this->Repository = $UserRepository
}
public function getByID($id) {
return $this->Repository->getByID($id);
}
}
ここで私は依存関係リゾルバを登録しています。
//Dependency resolver for Repository Layer
class RepositoryServiceProvider extends ServiceProvider {
public function register()
{
$this->app->singleton(IUserRepository::class, function() {
return new UserRepository();
});
}
}
ここで私は、サービスレイヤ
class ServiceServiceProvider extends ServiceProvider {
public function register()
{
$this->app->singleton(IUserService::class, function() {
//Here is what I don't like
//It would be great a solution that automaticly resolve UserRepository.
return new UserService(new UserRepository());
});
}
}
を登録しています見ての通り、私は自動UserServiceのに依存関係を解決します。しかしシングルトンメソッドは、返すオブジェクトを作成する必要があります。
良い方法がありますか?
***注:文法には注意しないでください。私はそれを内腔に書いていますが、laravelと同じ問題です。
は素晴らしい作品、ありがとうございました! – fobus