0
меня есть интерфейсLaravel 4 - инъекция зависимости на основе конфигурации?
interface RecordsService {
public function getRecords();
}
и две реализации:
public class ApiRecordsService implements RecordsService {
public function getRecords() {
//get records from api
}
}
public class DbRecordsService implements RecordsService {
public function getRecords() {
//get records from db
}
}
Теперь в моем контроллере я DI, как это:
class RecordsController {
private $recordsService;
public function __construct(RecordsService $recordsService) {
$this->recordsService= $recordsService;
}
}
И я связываю это так:
App::bind('RecordsService', 'ApiRecordsService');
Теперь мой вопрос, можно ли это реализовать более динамично, в зависимости от конфигурации, что-то вроде этого:
switch(Config::get('config.records_source')){
case 'db':
App::bind('RecordsService', 'DbRecordsService');
break;
case 'api':
App::bind('RecordsService', 'ApiRecordsService');
break;
}
и что более важно, это хорошая практика?