Задать вопрос
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...

Какие пробелы в моем классе для сравнения значений?

Запилил класс для гибкого сравнения значений. Постарался учесть все случаи для которых не подходит нативное сравнение. Посмотрите пожалуйста - может что-то не учел.
Код класса

По поводу реализации одним классом:
вначале планировал отдельные классы реализующие общий интерфейс для каждого типа/случая и класса-менеджер для управления ими, но в итоге отказался от этого варианта из-за неоправданной сложности реализации.
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Сложный 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@smple
compare должна не просто говорить равно или не равно, а должна еще сообщать какое число больше или меньше, поэтому возвращать она должна не bool, а больше или меньше, обычно делают возвращаемый тип int (0 если равны и -1 и 1 в случае если одно из чисел больше другова)

как сделать такое сравнение для произвольных массивов ? это спорный вопрос и универсального ответа нет.

как минимум надо предоставить возможность добавления своей логики сравнения различных типов.
например как в паттерне стратегия, добавлять свои способы сравнения, если бы я делал я бы скорей всего в эту сторону делал.

другое мелко улучшение, я бы убрал все публичные методы по изменению класса после создания, оставил бы только один публичный метод это compare, чтобы было видно цель этого класса, а какие то методы бы просто удалил (getFlags например)

ну и в целом такое не особо нужно в php, непонятно зачем это применять, код нормальный, понятный, даже есть тесты.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽