PHP7 クラス内の関数呼び出し
「PHP 5.6.11」で動作していた以下のようなソースが「PHP 7.1.0-dev」 で動作しなくなっていました。
※switch文の「return AAAA::$z[0]($x, $y, $z);」で「Fatal error: Uncaught Error: Access to undeclared static property: AAAA::$z in test.php:21」と表示されます。
「return call_user_func_array( array('AAAA', $z[0]), array(&$x,$y,$z) );」 と書き換えれば動作することを確認はしていますが、
PHP7にバージョンアップにするにあたって、違う点などを調べたのですが、英語が苦手なのもあって、この変更点に関する記述がわかりませんでした。
どなたがご存知でしたら、参考URLなど教えていただけませんでしょうか?
class AAAA {
static function caller(&$x, $y, $z)
{
switch($z[0])
{
case 'caller':
return 0;
case 'abc':
return AAAA::aaa($x, $y, $z);
case 'def':
return AAAA::bbb($x, $y, $z);
default:
if( strlen($z[0]) )
{
return AAAA::$z[0]($x, $y, $z);
}
else { return 0; }
}
}
static function aaa(&$x, $y, $z)
{
return $x[0] + $y[0];
}
static function bbb(&$x, $y, $z)
{
return $x[1] + $y[1];
}
static function func1(&$x, $y, $z)
{
$a = $x[0] + $z[1];
$b = $y[0] * $z[1];
return $a * $b;
}
static function func2(&$x, $y, $z)
{
$a = $x[1] + $z[2];
$b = $y[1] * $z[3];
return $a * $b;
}
}
$a = array(1,2,3,4);
$b = array(5,6,7,8);
$c = array('func2', 3,4,5);
$rec = AAAA::caller($a, $b, $c);
var_dump($rec);