示例#1
0
 /**
  * If you want skip some errors, call:
  * Magic::registerErrorDumper()->setPreCallback(callable $preCallback);
  *
  * If you want save information about error, call:
  * Magic::registerErrorDumper()->setPostCallback(callable $postCallback);
  *
  * Chain syntax is supported, for example:
  * Magic::registerErrorDumper()
  *  ->setPreCallback(callable $preCallback)
  *  ->setPostCallback(callable $postCallback);
  *
  * @see Handler::__invoke()
  * @param Editors\EditorInterface|null $editor
  * @param int $errorTypes
  * @return HandlerInterface
  */
 public static function registerErrorDumper(Editors\EditorInterface $editor = null, $errorTypes = RegisterErrorHandler::TYPE_ALL)
 {
     $dumper = self::createDumperBySapiName($editor);
     $handler = new Handler($dumper);
     $handler->setPostCallback(function () {
         exit(1);
     });
     if (php_sapi_name() !== 'cli') {
         $handler->setPreCallback(function () {
             if (!headers_sent()) {
                 header('HTTP/1.1 503 Service Temporarily Unavailable');
                 header('Status: 503 Service Temporarily Unavailable');
                 header('Retry-After: 300');
             }
         });
     }
     $registerErrorHandler = new RegisterErrorHandler($handler);
     $registerErrorHandler->register($errorTypes);
     return $handler;
 }
示例#2
0
 /**
  * @dataProvider callbacksDataProvider
  */
 public function testCallbacks($preText, $exceptionText, $postText, $break, $stream, $expected)
 {
     $self = $this;
     $fakeException = new FakeException();
     $exception = $fakeException->setMessage($exceptionText);
     $dumper = $this->createDumper();
     $handler = new Handler($dumper);
     /** @var \PHPUnit_Framework_MockObject_MockObject|PreCallbackEvent $preCallback */
     $preCallback = $this->getMockForAbstractClass('ErrorDumper\\Handlers\\PreCallbackEvent');
     $preCallback->method('__invoke')->willReturnCallback(function ($currentE) use($stream, $exception, $preText, $break, $preCallback, $self) {
         $self->assertSame($exception, $currentE);
         fputs($stream, $preText);
         $break && $preCallback->stopDisplay();
     });
     $dumper->setOutputStream($stream);
     $handler->setPreCallback($preCallback);
     $handler->setPostCallback(function ($currentE) use($stream, $exception, $postText, $self) {
         $self->assertSame($exception, $currentE);
         fputs($stream, $postText);
     });
     $handler($exception);
     $streamObj = new Stream($stream);
     $this->assertSame($expected, $streamObj->getContents());
 }