Как кастомизировать ексепшены в общем методе? Есть такой метод в общем сервисе, которые используется в нескольких местах в коде проекта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. Либо правильнее использовать какой то маппинг ексепшенов(в привязке на какие-то кастомные типы переданные в опциях метода) или сделать через фабрику или что то еще?
В данном случае, лучше всего использовать фабрику или фасад для создания кастомных исключений. Например, вы можете создать фабрику исключений, которая будет создавать и возвращать нужный кастомный исключение в зависимости от переданных параметров.
Пример:
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('Custom message'); } } } }
Этот подход позволяет легко изменять и добавлять различные кастомные исключения без изменения уже существующего кода. Вместо передачи параметров в метод, вы просто вызываете фабрику для создания нужного исключения.
Таким образом, ваш код станет более гибким, расширяемым и легко поддерживаемым в будущем.
В данном случае, лучше всего использовать фабрику или фасад для создания кастомных исключений. Например, вы можете создать фабрику исключений, которая будет создавать и возвращать нужный кастомный исключение в зависимости от переданных параметров.
Пример:
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('Custom message');
}
}
}
}
Этот подход позволяет легко изменять и добавлять различные кастомные исключения без изменения уже существующего кода. Вместо передачи параметров в метод, вы просто вызываете фабрику для создания нужного исключения.
Таким образом, ваш код станет более гибким, расширяемым и легко поддерживаемым в будущем.