This topic expands on When do/should I use __construct(), __get(), __set(), and __call() in PHP? which talks about the
PHP does not allow the passing of function pointers like other languages. Functions are not first class in PHP. Functions being first class mainly means that you can save a function to a variable, and pass it around and execute it at any time.
__invoke method is a way that PHP can accommodate pseudo-first-class functions.
A lot of functional programming relies on first class functions. Even normal imperative programming can benefit from this.
Say you had a sort routine, but wanted to support different compare functions. Well, you can have different compare classes that implement the __invoke function and pass in instances to the class to your sort function, and it doesn't even have to know the name of the function.
Really, you could always have done something like passing a class and have a function call a method, but now you can almost talk about passing a "function" instead of passing a class, although it's not as clean as in other languages.