Зачем нужен __invoke и когда его нужно использовать?
Метод __invoke() вызывается, когда скрипт пытается выполнить объект как функцию.<?php
class CallableClass
{
    public function __invoke($x)
    {
        var_dump($x);
    }
}
$obj = new CallableClass;
$obj(5);
var_dump(is_callable($obj));
?>
Из официальной документации. Когда вместо вызова метода класса, класс вызывается как функция.
Метод __invoke() вызывается, когда скрипт пытается выполнить объект как функцию.<?php
class CallableClass
{
    public function __invoke($x)
    {
        var_dump($x);
    }
}
$obj = new CallableClass;
$obj(5);
var_dump(is_callable($obj));
?>
Из официальной документации. Когда вместо вызова метода класса, класс вызывается как функция.