PHP Profi

Тег #strict

Тонкости языкаСоздание строго типизированных массивов и коллекций с использованием value object

Одной из особенностей языка, анонсированной еще в PHP 5.6, было добавление синтаксиса ... — для обозначения того, что функция или метод принимает переменную длину аргументов.

Что-то я редко встречаю, чтобы это было совмещено с указанием типа, в частности, для создания типизированных массивов.

Например, мы можем создать класс Movie с методом для задания массива дат выхода, который принимает только DateTimeImmutable объекты:

class Movie {
  private $airdates = [];

  public function setAirDates(\DateTimeImmutable ...$airdates) {
    $this->airdates = $airdates;
  }

  public function getAirDates() {
    return $this->airdates;
  }
}
2017-04-13 alek13