This topic expands on When do/should I use __construct(), __get(), __set(), and __call() in PHP? which talks about the __construct __get and __set magic methods.
As of PHP 5.3 there is a new Magic Method called __invoke. The __invoke method is called when a script tries to call an object as a function.
Now on research I have done for this method, people liken it to the Java method .run() - see Interface Runnable.
Having thought long and hard about this I can't think of any reason why you would call $obj(); as opposed to $obj->function();
Even if you were iterating over an array of objects, you would still know the main function name that you would want to run.
So is the __invoke magic method another example of 'just because you can, doesn't mean you should' shortcut in PHP, or are there cases where this would actually be the right thing to do?