|
|
|
|
@ -1,5 +1,5 @@ |
|
|
|
|
--TEST-- |
|
|
|
|
Dynamic call caches preserve polymorphic, object, and magic dispatch |
|
|
|
|
Dynamic calls preserve cached names, dynamic names, polymorphism, and magic dispatch |
|
|
|
|
--FILE-- |
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
@ -99,6 +99,11 @@ function invoke_nullsafe_named_method(?object $object, int $value): ?string |
|
|
|
|
return $object?->run($value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function invoke_nullsafe_dynamic_method(?object $object, mixed $method, int $value): ?string |
|
|
|
|
{ |
|
|
|
|
return $object?->$method($value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function invoke_static_method(mixed $class, mixed $method, int $value): string |
|
|
|
|
{ |
|
|
|
|
return $class::$method($value); |
|
|
|
|
@ -139,16 +144,18 @@ function main(): void |
|
|
|
|
var_dump(invoke_nullsafe_named_method($objects[0], 11)); |
|
|
|
|
var_dump(invoke_nullsafe_named_method(null, 12)); |
|
|
|
|
var_dump(invoke_nullsafe_named_method($objects[1], 13)); |
|
|
|
|
var_dump(invoke_nullsafe_dynamic_method($objects[0], 'run', 14)); |
|
|
|
|
var_dump(invoke_nullsafe_dynamic_method(null, 'run', 15)); |
|
|
|
|
|
|
|
|
|
$scoped = new CachedScopedMethod(); |
|
|
|
|
var_dump($scoped->invoke('hidden', 14)); |
|
|
|
|
var_dump($scoped->invoke('hidden', 15)); |
|
|
|
|
var_dump($scoped->invoke('hidden', 16)); |
|
|
|
|
var_dump($scoped->invoke('hidden', 17)); |
|
|
|
|
|
|
|
|
|
var_dump(invoke_static_method('CachedStaticMethod', 'run', 16)); |
|
|
|
|
var_dump(invoke_static_method('CachedStaticMethodSecond', 'run', 17)); |
|
|
|
|
var_dump(invoke_static_method('CachedStaticMagic', 'missing', 18)); |
|
|
|
|
var_dump(invoke_static_named_method('CachedStaticMethod', 19)); |
|
|
|
|
var_dump(invoke_named_class_dynamic_method('run', 20)); |
|
|
|
|
var_dump(invoke_static_method('CachedStaticMethod', 'run', 18)); |
|
|
|
|
var_dump(invoke_static_method('CachedStaticMethodSecond', 'run', 19)); |
|
|
|
|
var_dump(invoke_static_method('CachedStaticMagic', 'missing', 20)); |
|
|
|
|
var_dump(invoke_static_named_method('CachedStaticMethod', 21)); |
|
|
|
|
var_dump(invoke_named_class_dynamic_method('run', 22)); |
|
|
|
|
} |
|
|
|
|
?> |
|
|
|
|
--EXPECT-- |
|
|
|
|
@ -166,10 +173,12 @@ string(16) "magic-missing:10" |
|
|
|
|
string(15) "method-first:11" |
|
|
|
|
NULL |
|
|
|
|
string(16) "method-second:13" |
|
|
|
|
string(9) "scoped:14" |
|
|
|
|
string(9) "scoped:15" |
|
|
|
|
string(9) "static:16" |
|
|
|
|
string(16) "static-second:17" |
|
|
|
|
string(23) "static-magic-missing:18" |
|
|
|
|
string(9) "static:19" |
|
|
|
|
string(9) "static:20" |
|
|
|
|
string(15) "method-first:14" |
|
|
|
|
NULL |
|
|
|
|
string(9) "scoped:16" |
|
|
|
|
string(9) "scoped:17" |
|
|
|
|
string(9) "static:18" |
|
|
|
|
string(16) "static-second:19" |
|
|
|
|
string(23) "static-magic-missing:20" |
|
|
|
|
string(9) "static:21" |
|
|
|
|
string(9) "static:22" |
|
|
|
|
|