- restore_error_handler: documentation ( source)
- set_error_handler: documentation ( source)
- trigger_error: documentation ( source)
- debug_print_backtrace: documentation ( source)
<?php
namespace PHPUnit\TestFixture;
use function set_error_handler;
use function trigger_error;
use PHPUnit\Framework\TestCase;
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 Issue5844Test
{
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);
// $this->assertTrue(true);
}
}
(new Issue5844Test())->testSetErrorHandlerNonCallable();