Отрицательное количество элементов (PHP)
Сегодня утром с разработчиками обсуждали фрагмент кода, где автор очень уж параноидально подошёл к проверке:
if (count($this->to) <= 0) {
$this->validation_errors[] = "Неверный отправитель";
}
Проверять возвращает ли функция count значение меньшее нуля действительно странно, но я вдруг подумал — а можно ли в ПХП в припципе заставить эту функцию вернуть такое значение?
Дело в том, что функцию count можно использовать не только с примитивными типами (чаще всего её используют с массивами), но и с объектами, которые реализуют интерфейс Countable.
Оказалось вполне нормально работает:
$var = new class implements \Countable {
public function count()
{
return -1;
}
}
var_dump(count($var)); // выведет int(-1)
Выше код написан в синтаксисе ПХП7, который выйдет сегодня, но его можно переписать и на «пятёрку» — надо только дать имя классу.
Я бы перефразировал это условиее в не менее параноидальном, но более читаемом виде: if (count($this->to) < 1) — читается как «должен быть хотя бы один адресат». Кстати, у вас отправитель с адресатом, кажется, попутаны :-).
Комментарий для morozov.livejournal.com:
Я не помню точно, а смотреть мне не хочется, но это может быть разбор чего-то входящего (эл. письма, например).