PHP 5.4.5、こちら。他のオブジェクトのメンバーとして保存されているオブジェクトを呼び出そうとしています。このように(非常に大まかに)
class A {
function __invoke () { ... }
}
class B {
private a = new A();
...
$this->a(); <-- runtime error here
}
もちろん、aと呼ばれるメソッドがないため、これによりランタイムエラーが発生します。しかし、私がこのように呼び出しを書くと:
($this->a)();
次に、構文エラーが発生します。
もちろん、私は書くことができます
$this->a->__invoke();
しかし、それは耐え難いほど醜いようであり、むしろファンクターのポイントを弱体化させます。より良い(または公式の)方法があるかどうか疑問に思っていました。