3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace Foo; use function set_error_handler; use function trigger_error; class SomeExternalDependency { public function __construct() { set_error_handler([$this, 'logError']); $this->triggerError(); } public static function triggerError(): void { trigger_error('error', E_USER_WARNING); } private function logError(): bool { debug_print_backtrace(); return true; } } class Test { public function testSetErrorHandlerNonCallable(): void { new SomeExternalDependency(); $callableWithPrivateMethod = set_error_handler(static fn () => false); restore_error_handler(); // restore_error_handler(); // set_error_handler($callableWithPrivateMethod); echo "\nii.\n"; SomeExternalDependency::triggerError(); echo "\niii.\n"; trigger_error('error', E_USER_WARNING); } } (new Test())->testSetErrorHandlerNonCallable();
Output for 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
#0 [internal function]: Foo\SomeExternalDependency->logError(512, 'error', '/in/mZ9E3', 18) #1 /in/mZ9E3(18): trigger_error('error', 512) #2 /in/mZ9E3(13): Foo\SomeExternalDependency::triggerError() #3 /in/mZ9E3(33): Foo\SomeExternalDependency->__construct() #4 /in/mZ9E3(47): Foo\Test->testSetErrorHandlerNonCallable() ii. #0 [internal function]: Foo\SomeExternalDependency->logError(512, 'error', '/in/mZ9E3', 18) #1 /in/mZ9E3(18): trigger_error('error', 512) #2 /in/mZ9E3(40): Foo\SomeExternalDependency::triggerError() #3 /in/mZ9E3(47): Foo\Test->testSetErrorHandlerNonCallable() iii. Fatal error: Uncaught Error: Invalid callback Foo\SomeExternalDependency::logError, cannot access private method Foo\SomeExternalDependency::logError() in /in/mZ9E3:43 Stack trace: #0 /in/mZ9E3(43): trigger_error('error', 512) #1 /in/mZ9E3(47): Foo\Test->testSetErrorHandlerNonCallable() #2 {main} thrown in /in/mZ9E3 on line 43
Process exited with code 255.
Output for 8.1.0 - 8.1.33
#0 [internal function]: Foo\SomeExternalDependency->logError(512, 'error', '/in/mZ9E3', 18) #1 /in/mZ9E3(18): trigger_error('error', 512) #2 /in/mZ9E3(13): Foo\SomeExternalDependency::triggerError() #3 /in/mZ9E3(33): Foo\SomeExternalDependency->__construct() #4 /in/mZ9E3(47): Foo\Test->testSetErrorHandlerNonCallable() ii. #0 [internal function]: Foo\SomeExternalDependency->logError(512, 'error', '/in/mZ9E3', 18) #1 /in/mZ9E3(18): trigger_error('error', 512) #2 /in/mZ9E3(40): Foo\SomeExternalDependency::triggerError() #3 /in/mZ9E3(47): Foo\Test->testSetErrorHandlerNonCallable() iii. Warning: Invalid callback Foo\SomeExternalDependency::logError, cannot access private method Foo\SomeExternalDependency::logError() in /in/mZ9E3 on line 43 Warning: error in /in/mZ9E3 on line 43

preferences:
105.77 ms | 410 KiB | 5 Q