Всем привет! В этом материале рассмотрим, как использовать интерфейс для счета в PHP .

Как использовать интерфейс countable в PHP.

Всем привет! В этом материале рассмотрим, как использовать интерфейс для счета в PHP.

Интерфейс для счета делает ваши классы очень гибкими, если они касаются хранения элементов. Например, это даст вам возможность использовать функцию count() в PHP для объекта, чтобы вернуть некоторое посчитанное число. Совсем не важно, что это за объект, главное, что можно посчитать.

Давайте рассмотрим пример:

class Collection {
  protected $items = [];

  public function __construct(array $items) {
   $this->items = $items;
  }

  public function count() {
   return count($this->items);
  }
}

$collection = new Collection(['one', 'two', 'three']);
echo $collection->count();

Идея такая: вы имеете некоторое количество предметов, хранящееся в коллекции, вы можете передать их в конструктор при создании экземпляра объекта, вы можете иметь другие методы, которые будут добавлять предметы, но в нашем примере мы ограничимся конструктором. Дальшем мы создаем новую коллекцию, куда передаем три предмета(в нашем случае это строки). Теперь мы используем написанный нами метод count(), в котором помещаем массив в функцию count() и возвращаем результат.

Если мы запустим пример, то увидим 3, что и ожидалось. Однако использование этого интерфейса говорит нам о том, что мы не будем писать что-то вроде этого:

if($collection->count() > 0) {

}

Мы можем улучшить это, написав вот так:

if(count($collection) > 0) {

}

Это будет работать, но мы не получим ожидаемого результата, так как функция с аргументом в виде объекта вернет нам логическое значение 1.

Чтобы все начало работать так, как мы хотим, нужно всего лишь добавить наследование от интерфейса. Вот так:

class Collection implements Countable {
  // код
}

Теперь при вызове функции count() с аргументом в виде объекта автоматически будет вызываться написанный нами метод count(), и все будет работать правильно.

Countable – это очень простой, но полезный интерфейс, который позволяет легко и просто производить подсчеты. Более подробную информацию вы можете найти на официальном сайте PHP.

Итак, на этом сегодня все. Спасибо за внимание!