要するに、クラスを継承した時に引数の呼び出し方を変えたくないということなんだけど。
親クラスの __constructの引数の実装を知らなくても良いようにしたいということ。
ダメだったケース
<?php class ArgsP { function __construct(... $args){ var_dump($args); } } class ArgsC extends ArgsP { function __construct(... $args){ parent::__construct($args); } } new ArgsC(1, 2, 3);
ってすると、
array(1) { [0] => array(3) { [0] => int(1) [1] => int(2) [2] => int(3) } }
ってなってしまった。当たり前やん。
呼び出す時も... を使った可変長引数を使えばO.K
こんな感じ。
<?php class ArgsP { function __construct(... $args){ var_dump($args); } } class ArgsC extends ArgsP { function __construct(... $args){ parent::__construct(... $args); } } new ArgsC(1, 2, 3);
これで結果が
array(3) { [0] => int(1) [1] => int(2) [2] => int(3) }
ってなる。やった~。