<?php
class A {
public static function foo() {
static $arr = array();
$arr[] = 2;
return $arr;
}
}
class C extends A {
}
printf("%s\n", json_encode(A::foo()));
printf("%s\n", json_encode(A::foo()));
printf("%s\n", json_encode(C::foo()));
eval('class B extends A{}');
printf("\nIt would be intuitive for B::foo() to be [2], but the real value is below\n");
printf("%s\n", json_encode(B::foo()));
[2]
[2,2]
[2,2,2]
It would be intuitive for B::foo() to be [2], but the real value is below
[2,2,2,2]
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[2]
[2,2]
[2,2,2]
It would be intuitive for B::foo() to be [2], but the real value is below
[2,2,2,2]