Мой контроллер выглядит так:
public function store(Request $request) {
$validateData = $request->validate([
'name' => 'required|unique:languages',
'code' => 'required|size:3',
'flag' => 'required|size:2'
]);
$language = new Language();
$language->name = $request->name;
$language->code = $request->code;
$language->flag = $request->flag;
$saveLanguage = $language->save();
if(!$saveLanguage){
return response()->json(['error'=>'Something went wrong, please try later.'],500);
}
return response()->json(['success'=>'Language has been created successfully', 'data'=>$language],200);
Как видите, я создаю экземпляр нового объекта Language, и все работает нормально, но первая проблема заключается в том, что представьте, что в будущем я изменю класс Language (например: вам нужно передать 2 параметра в конструкторе), мне нужно изменить этот контроллер и все остальные контроллеры, в которых я создаю Language
объект.
Вторая проблема в том, что я не могу или слишком сложно протестировать этот контроллер.
Мне любопытно, что является лучшим решением для решения этой проблемы в Laravel?
Например, это хорошее решение - использовать простой шаблон фабричного или фабричного метода для каждой модели, которую я использую в своих контроллерах.
Я думаю, что когда вы пишете что-то вроде $var = new SomeClass()
в другом классе, это otherClass
зависит от SomeClass, и когда вы хотите изменить SomeClass
, вы должны обновить otherClass
на. Что вы думаете об этом, как я могу избежать этого.