Статическая переменная PHP в функции, разделяемой между объектами дочернего классаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Статическая переменная PHP в функции, разделяемой между объектами дочернего класса

Сообщение Anonymous »

Я удивлен тем, что при использовании статической переменной внутри функции для простого кэширования статическое значение сохраняется между различными дочерними классами класса, в котором находится функция.
Имеется это изменилось между PHP8.0 и 8.1?
Код для воспроизведения

Код: Выделить всё

class top{

public function cacheValue(){
static $cache;
if (!isset($cache)) {
$cache=get_class($this)."\n";
}
return $cache;
}
}

class child1 extends top{

}
class child2 extends top{

}

$a = new child1;

$b = new child2;

echo $a->cacheValue();
echo $b->cacheValue();
Ожидаемый результат:
ребенок1
ребенок2
Фактический результат:ребенок1
ребенок1

Подробнее здесь: https://stackoverflow.com/questions/792 ... ss-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»