以下の状況を想定します。メソッドでさまざまな引数リストを使用するクラス階層があり、子孫クラスごとに拡張される可能性があります。
<?php
header('Content-Type: text/plain; charset=utf-8');
class A {
public function __invoke(){
$arguments = implode(', ', func_get_args());
echo __METHOD__, ' arguments: ', $arguments, PHP_EOL;
}
}
class B extends A {
public function __invoke(){
// ... some actions ...
// call to parent method with current argument list
// ... some actions ...
}
}
?>
このクラス階層がメソッドの固定引数で実装されている場合、目的を達成するために__invoke()
何かを使用する可能性があります。parent::__invoke($a, $b, $c, $etc);
しかし残念ながら、両方のクラスA
とB
いくつかの機能があり、さまざまな引数リストに依存しています。
さて、質問: どうすればその引数リストparent::__invoke()
から呼び出して渡すことができますか?B::__invoke()
そして、ええ、もっと複雑にします。チェーンがさらに拡張される可能性があるため、親クラスの実際の名前に依存することはできません。
PS:これについてはどこかで言及したいと思います。