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

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

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

Войти через центр авторизации
Похожие вопросы