Что должен возвращать метод?

Здравствуйте! помогите разобраться с вопросом.
Пытаюсь написать класс для очистки данных. Предполагается что все данные любых форм будут проходить через соответствующие статические методы этого класса.
Однако IDE материт меня почём зря и сам PHP тоже недоволен моими кривыми руками не слишком умными мозгами.

Пытаясь написать метод для очистки int я нагородил следующее:
public static function cleanInt($int)
    {
        $int = trim($int);
        try {
            if ($int = (int) $int) {
                return $int;
            }
            throw new Exception('Not int ');

        } catch (Exception $e) {
            echo $e->getMessage();
        }

        return false;
    }


Вот тут у меня и возникли вопросы.
Если я ожидаю что метод вернёт int то по идее return false неверное решение, но если вместо int в метод пришла абракадабра? что должен вернуть метод если не false? Возвращать в таком случае 0 и считать его ошибкой? Тоже так себе решение, придётся каждый раз проверять не равен ли результат 0? А что делать если случится случай при котором 0 вполне себе допустим?
Или после выброса исключения вообще ничего не возвращать? В таком варианте IDE говорит что руки у меня кривые и мозги я уже пропил и вообще мне не стоит этим заниматься в таком возрасте.

Есть ещё одна мысль, но я пока не знаю с какой стороны к ней подойти.
А может забить на мнение IDE и всё таки ничего не возвращать? И написать свой собственный Exception результатом которого будет alert пользователю что он ошибся при вводе данных. Такой путь конечно сложен и тернист но мне пока он кажется наиболее верным.
Подскажите может я вообще не в ту сторону думаю?
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
Нельзя смешивать int и boolean.
Здесь несколько вариантов.
Самый простой - использовать exceptions, но это дорого.
Если функция возвращает 0, то в большинстве случаев это означает учпех. Можно в виде ошибки вернуть -1.
Другой вариант - возвращать класс типа ErrorType { errorCode, errDescription }.
Вариант сложнее - написать класс, внутри которого этот метод, но не статичный. И писать результаты выполнения в поля этого класса - errCode, errDescription
...
Вариантов масса, но только не такой как у тебя
Ответ написан
Как вариант, можно подсмотреть в С#. Там реализованы пары методов для классов Int, Float (и прочими): Int.Parse(string) и Int.TryParse(string). Первый в случае ошибки бросает исключение, второй молча возвращает 0. В зависимости от логики используется либо то, либо то.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 130 000 до 170 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
от 80 000 до 120 000 ₽
04 мар. 2021, в 16:10
10000 руб./за проект
04 мар. 2021, в 15:49
500 руб./в час
04 мар. 2021, в 15:42
8000 руб./за проект