<?php class RepositoryResolver { protected $repos = []; const DEFAULT_REPO = BaseRepository::class; public functuion __construct(Application $app) { $this->app = $app; } public function addRepo($model, $repository) { $this->repos[$model] = $respository; } public function resolve($model) { if(isset($this->repos[$model])){ return $this->app->make($model); } return $this->getDefaultRepository($model); } public function getDefaultRepository($model) { return $this->app->make(static::DEFAULT_REPO, compact('model')); } }