芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/kwesioben.com/paymoney/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\Util; use const E_DEPRECATED; use const E_NOTICE; use const E_STRICT; use const E_USER_DEPRECATED; use const E_USER_NOTICE; use const E_USER_WARNING; use const E_WARNING; use function debug_backtrace; use function error_reporting; use function in_array; use function restore_error_handler; use function set_error_handler; use PHPUnit\Event; use PHPUnit\Framework\TestCase; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class ErrorHandler { private static ?self $instance = null; private bool $enabled = false; public static function instance(): self { return self::$instance ?? self::$instance = new self; } /** * @throws Exception */ public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine): bool { $suppressed = !($errorNumber & error_reporting()); if ($suppressed && in_array($errorNumber, [E_DEPRECATED, E_NOTICE, E_STRICT, E_WARNING], true)) { return false; } switch ($errorNumber) { case E_NOTICE: case E_STRICT: Event\Facade::emitter()->testTriggeredPhpNotice( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); return true; case E_USER_NOTICE: Event\Facade::emitter()->testTriggeredNotice( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; case E_WARNING: Event\Facade::emitter()->testTriggeredPhpWarning( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; case E_USER_WARNING: Event\Facade::emitter()->testTriggeredWarning( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; case E_DEPRECATED: Event\Facade::emitter()->testTriggeredPhpDeprecation( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; case E_USER_DEPRECATED: Event\Facade::emitter()->testTriggeredDeprecation( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; case E_USER_ERROR: Event\Facade::emitter()->testTriggeredError( $this->testValueObjectForEvents(), $errorString, $errorFile, $errorLine ); break; default: // @codeCoverageIgnoreStart return false; // @codeCoverageIgnoreEnd } return true; } public function enable(): void { if ($this->enabled) { // @codeCoverageIgnoreStart return; // @codeCoverageIgnoreEnd } $oldErrorHandler = set_error_handler($this); if ($oldErrorHandler !== null) { // @codeCoverageIgnoreStart restore_error_handler(); return; // @codeCoverageIgnoreEnd } $this->enabled = true; } public function disable(): void { if (!$this->enabled) { // @codeCoverageIgnoreStart return; // @codeCoverageIgnoreEnd } restore_error_handler(); $this->enabled = false; } /** * @throws NoTestCaseObjectOnCallStackException */ private function testValueObjectForEvents(): Event\Code\Test { foreach (debug_backtrace() as $frame) { if (isset($frame['object']) && $frame['object'] instanceof TestCase) { return $frame['object']->valueObjectForEvents(); } } // @codeCoverageIgnoreStart throw new NoTestCaseObjectOnCallStackException; // @codeCoverageIgnoreEnd } }