| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- <?php
 
- /*
 
-  * This file is part of the Symfony package.
 
-  *
 
-  * (c) Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace Symfony\Component\Debug\Exception;
 
- /**
 
-  * Fatal Error Exception.
 
-  *
 
-  * @author Konstanton Myakshin <koc-dp@yandex.ru>
 
-  */
 
- class FatalErrorException extends \ErrorException
 
- {
 
-     public function __construct($message, $code, $severity, $filename, $lineno, $traceOffset = null, $traceArgs = true, array $trace = null, $previous = null)
 
-     {
 
-         parent::__construct($message, $code, $severity, $filename, $lineno, $previous);
 
-         if (null !== $trace) {
 
-             if (!$traceArgs) {
 
-                 foreach ($trace as &$frame) {
 
-                     unset($frame['args'], $frame['this'], $frame);
 
-                 }
 
-             }
 
-             $this->setTrace($trace);
 
-         } elseif (null !== $traceOffset) {
 
-             if (\function_exists('xdebug_get_function_stack')) {
 
-                 $trace = xdebug_get_function_stack();
 
-                 if (0 < $traceOffset) {
 
-                     array_splice($trace, -$traceOffset);
 
-                 }
 
-                 foreach ($trace as &$frame) {
 
-                     if (!isset($frame['type'])) {
 
-                         // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695
 
-                         if (isset($frame['class'])) {
 
-                             $frame['type'] = '::';
 
-                         }
 
-                     } elseif ('dynamic' === $frame['type']) {
 
-                         $frame['type'] = '->';
 
-                     } elseif ('static' === $frame['type']) {
 
-                         $frame['type'] = '::';
 
-                     }
 
-                     // XDebug also has a different name for the parameters array
 
-                     if (!$traceArgs) {
 
-                         unset($frame['params'], $frame['args']);
 
-                     } elseif (isset($frame['params']) && !isset($frame['args'])) {
 
-                         $frame['args'] = $frame['params'];
 
-                         unset($frame['params']);
 
-                     }
 
-                 }
 
-                 unset($frame);
 
-                 $trace = array_reverse($trace);
 
-             } elseif (\function_exists('symfony_debug_backtrace')) {
 
-                 $trace = symfony_debug_backtrace();
 
-                 if (0 < $traceOffset) {
 
-                     array_splice($trace, 0, $traceOffset);
 
-                 }
 
-             } else {
 
-                 $trace = [];
 
-             }
 
-             $this->setTrace($trace);
 
-         }
 
-     }
 
-     protected function setTrace($trace)
 
-     {
 
-         $traceReflector = new \ReflectionProperty('Exception', 'trace');
 
-         $traceReflector->setAccessible(true);
 
-         $traceReflector->setValue($this, $trace);
 
-     }
 
- }
 
 
  |