Zmienna liczba argumentów w konstruktorze

W PHP nie raz zachodzi potrzeba przechowywania w obiekcie tablicy obiektów określonego typu, np. w kolekcjach, managerach strategii, itp. Jeśli lista obiektów jest przekazywana w konstruktorze to warto sprawdzić czy są właściwego typu. Przykładowy konstruktor może wyglądać tak:

/**
 * @param Item[] $items
 * @throws InvalidArgumentException
 */
public function __construct(array $items)
{
    foreach ($items as $item) {
        if (!$item instanceof Item) {
            throw new InvalidArgumentException('Collection accepts only instances of Item');
        }
    }
    $this->items = $items;
}

Ten sam efekt można osiągnąć prościej dzięki zastosowaniu operatora … (trzy kropki):

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *