__invoke() позволяет вызывать объект как функцию:
class Multiplier {
public function __construct(private int $factor) {}
public function __invoke(int $value): int {
return $value * $this->factor;
}
}
$double = new Multiplier(2);
echo $double(5); // 10
echo $double(10); // 20
// Можно передавать как callable
$result = array_map(new Multiplier(3), [1, 2, 3]); // [3, 6, 9]Паттерн Single Action Class - класс с единственным действием: валидаторы, конвертеры, pipeline-шаги.