Как кастомизировать ексепшены в общем методе? Есть такой метод в общем сервисе, которые используется в нескольких местах в коде проектаpublic function checkParams(array $params) { foreach($params as $param) { if (!in_array($param, self::ARRAY_CONSTANT)) { throw new CustomException('Custom message'); } } } Как правильно кастомизировать ексепшены с точки зрения чистого кода, ооп подхода, чтобы при вызове с разных мест использовать свой кастомный ексепшен?Возможны ли такие подходы или может быть есть другие варианты?:1. CustomException и 'Custom message' передавать в виде параметров или опций, примерно так:public function checkParams($params, string $customExceptionClassName, string $customMessage) { ... }2. Либо правильнее использовать какой то маппинг ексепшенов(в привязке на какие-то кастомные типы переданные в опциях метода) или сделать через фабрику или что то еще?

15 Сен 2022 в 19:54
258 +1
0
Ответы
1

В данном случае, лучше всего использовать фабрику или фасад для создания кастомных исключений. Например, вы можете создать фабрику исключений, которая будет создавать и возвращать нужный кастомный исключение в зависимости от переданных параметров.

Пример:

class CustomExceptionFactory {
public static function createCustomException($message) {
return new CustomException($message);
}
}
class Service {
public function checkParams(array $params) {
foreach($params as $param) {
if (!in_array($param, self::ARRAY_CONSTANT)) {
throw CustomExceptionFactory::createCustomException′Custommessage′'Custom message'Custommessage;
}
}
}
}

Этот подход позволяет легко изменять и добавлять различные кастомные исключения без изменения уже существующего кода. Вместо передачи параметров в метод, вы просто вызываете фабрику для создания нужного исключения.

Таким образом, ваш код станет более гибким, расширяемым и легко поддерживаемым в будущем.

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