Introduction
The __invoke method lets you use an object like a function. This makes your code simpler and more flexible.
When you want an object to act like a function for easy calling.
When you want to pass an object as a callback to other functions.
When you want to group related behavior inside an object but call it simply.
When you want to create objects that can be used in places where functions are expected.