Comment appeler la méthode __invoke d'une variable membre dans une class

PHP 5.4.5, ici. J'essaie d'invoquer un object qui est stocké en tant que membre d'un autre object. Comme ça (très grossièrement)

class A { function __invoke () { ... } } class B { private a = new A(); ... $this->a(); <-- runtime error here } 

Cela produit une erreur d'exécution, bien sûr, car il n'y a pas de méthode appelée a. Mais si j'écris l'appel comme ceci:

 ($this->a)(); 

alors je reçois une erreur de syntaxe.

Bien sûr, je peux écrire

 $this->a->__invoke(); 

mais cela semble intolérablement moche, et mine plutôt le sharepoints foncteurs. Je me demandais s'il y avait une meilleure façon (ou officielle).