Back

Z życia programisty PHP - trzy kropki w argumencie metody

PHP
01 gru

Dziś krótko o rzadko spotykanym sposobie dodawania parametru w funkcji lub w metodzie. W poniższym przykładzie widzimy parametr $x poprzedzony trzema kropkami. Dodatkowo mamy zadeklarowany typ parametru int. Taki zapis oznacza że jako parametr może zostać wpisany dowolny ciąg liczb. Dodatkowo została użyta magiczna metoda __invoke którą można zastosować w sytuacji, kiedy wiemy że w klasie będzie miała tylko jedna metoda. Powołując obiekt do życia przez słówko new możemy ominąć metodę i odrazu używać parametrów. Zmienna która normalnie byłaby obiektem teraz jest jakby metodą. W przykładzie, możemy dodać wiele liczb które zostaną potraktowane jak tablica, a więc możliwe do przyjęcia przez funkcje array_sum i dodane do siebie. I to taki bajerek. Jednak jak to potestować, to metoda przyjmuje też stringi i inne typy a funkcja array_sum doda tylko liczby. Tak więc słówko int jest w zbędne.

<?php
class Klasa
{
    public function __invoke(int ...$x)
    {
      echo  array_sum($x);
    }
}
$obj = new Klasa;
echo $obj(33,10,22);

// result: 65
?>