しれっとこのタイミング大きな変更入れてきてる
関数内にstaticで変数を宣言する場合が影響受ける。
従来通りの挙動に近くするにはprotected static $member_counterのようなスタティックなメンバ変数を定義してそれを
static::$member_counterという風にアクセスすればよい(self::だとダメ)
<?php
class A {
protected static $member_counter = 0;
public static function counter() {
static $counter = 0;
$counter++;
return $counter;
}
public static function member_counter(){
static::$member_counter++;
return static::$member_counter;
}
}
class B extends A {
protected static $member_counter = 0;
}
var_dump(A::counter()); // int(1)
var_dump(A::counter()); // int(2)
var_dump(B::counter()); // int(3), previously int(1)
var_dump(B::counter()); // int(4), previously int(2)
echo '======================='.PHP_EOL;
var_dump(A::member_counter()); // int(1)
var_dump(A::member_counter()); // int(2)
var_dump(B::member_counter()); // int(1)
var_dump(B::member_counter()); // int(2)
実行例
参考