Вызов объекта как текст или функция

Вызов объекта как текст

Когда объект вызывается как строка, то PHP смотрит магический метод __toString().

class Test
{
    function __toString() {
        return $this->data;
    }
}

$test = new Test();
echo $test; // выполнится метод __toString()

Вызов объекта как функция

Когда объект вызывается как функция, то PHP смотрит магический метод __invoke().

class Doubles
{
    function __invoke($d) {
        return $d * 2;
    }
}

$double = new Doubles();
echo $double(2); // 4
echo $double(3); // 6
echo $double(4); // 8