Как правильно создать класс фабричным методом? В Laravel имею следующие классы:

21 Авг 2019 в 07:07
447 +3
0
Ответы
1

Проблема заключается в том, что метод Str::title() возвращает строку, начинающуюся с заглавной буквы, но не преобразует её в нижний регистр. Поэтому, когда вы пытаетесь создать класс с помощью new $class, PHP ищет класс с таким же именем, как результат метода Str::title(), который начинается со заглавной буквы.

Для исправления этой проблемы нужно преобразовать результат метода Str::title() в нижний регистр, а затем создать класс. Вот как это можно сделать:

class ParserFactory {
public static function create($engine)
{
$class = Str::title($engine) . 'Parser';
$class = 'App\Models\\' . $class; // добавляем пространство имен к имени класса
$class = app()->make($class); // создаем класс с помощью сервис-контейнера Laravel
return $class;
}
}

Теперь ваш фабричный метод должен правильно создавать классы на основе переданного движка.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир