<?php
// Current output:
// TestWithPublicMethods@enter OK
// TestWithPrivateMethods@enter OK
// TestWithPublicMethods@leave OK
//
// Warning: (Registered shutdown functions) Unable to call TestWithPrivateMethods::leave() - function does not exist in Unknown on line 0
// Expected:
// TestWithPublicMethods@enter OK
// TestWithPrivateMethods@enter OK
// TestWithPublicMethods@leave OK
// TestWithPrivateMethods@leave OK
class TestWithPublicMethods {
public function test() {
spl_autoload_register([ $this, 'enter' ], true, true);
register_shutdown_function([ $this, 'leave' ]);
}
public function enter() {
eval('class TestWithPublicMethodsAutoload {}');
echo __CLASS__ . '@' . __FUNCTION__ . " OK\n";
}
public function leave() {
echo __CLASS__ . '@' . __FUNCTION__ . " OK\n";
}
}
(new TestWithPublicMethods)->test();
new TestWithPublicMethodsAutoload;
class TestWithPrivateMethods {
public function test() {
spl_autoload_register([ $this, 'enter' ], true, true);
register_shutdown_function([ $this, 'leave' ]);
}
private function enter() {
eval('class TestWithPrivateMethodsAutoload {}');
echo __CLASS__ . '@' . __FUNCTION__ . " OK\n";
}
private function leave() {
echo __CLASS__ . '@' . __FUNCTION__ . " OK\n";
}
}
(new TestWithPrivateMethods)->test();
new TestWithPrivateMethodsAutoload;
TestWithPublicMethods@enter OK
TestWithPrivateMethods@enter OK
TestWithPublicMethods@leave OK
TestWithPrivateMethods@leave OK
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
TestWithPublicMethods@enter OK
TestWithPrivateMethods@enter OK
TestWithPublicMethods@leave OK
TestWithPrivateMethods@leave OK
Output for 8.0.0 - 8.0.30
TestWithPublicMethods@enter OK
TestWithPrivateMethods@enter OK
TestWithPublicMethods@leave OK
Fatal error: Registered shutdown function TestWithPrivateMethods::leave() cannot be called, function does not exist in Unknown on line 0
Process exited with code 255.
TestWithPublicMethods@enter OK
TestWithPrivateMethods@enter OK
TestWithPublicMethods@leave OK
Warning: (Registered shutdown functions) Unable to call TestWithPrivateMethods::leave() - function does not exist in Unknown on line 0
Parse error: syntax error, unexpected '[', expecting ')' in /in/lClJQ on line 19
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[', expecting ')' in /in/lClJQ on line 19
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/lClJQ on line 18
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/lClJQ on line 18
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/lClJQ on line 18
Process exited with code 255.