Source of file FilteredBacktraceReporter.php
Size: 1,868 Bytes - Last Modified: 2021-12-24T06:35:34+00:00
/var/www/docs.ssmods.com/process/src/src/Camspiers/LoggerBridge/BacktraceReporter/FilteredBacktraceReporter.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | <?php namespace Camspiers\LoggerBridge\BacktraceReporter; /** * Class FilteredBacktraceReporter */ class FilteredBacktraceReporter extends BasicBacktraceReporter { /** * An array of function names to be excluded * @var array */ protected $filteredFunctions = array(); /** * Takes an array of functions names that should be filtered * @param array $filteredFunctions * @throws \RuntimeException */ public function __construct($filteredFunctions) { if (is_array($filteredFunctions)) { $this->filteredFunctions = $filteredFunctions; } else { throw new \RuntimeException("Filtered functions argument to FilteredBacktraceReporter must be an array"); } } /** * Returns a filtered backtrace using regular expressions * @param mixed $exception * @return array|void */ public function getBacktrace($exception = null) { $backtrace = parent::getBacktrace($exception); foreach ($backtrace as $index => $backtraceCall) { $functionName = $this->buildFunctionName($backtraceCall); foreach ($this->filteredFunctions as $pattern) { if (preg_match('/'.$pattern.'/', $functionName)) { unset($backtrace[$index]); break; } } } return array_values($backtrace); } /** * Builds a string representation of the backtrace call * @param $backtraceCall * @return string */ protected function buildFunctionName($backtraceCall) { if (isset($backtraceCall['class'])) { return $backtraceCall['class'] . $backtraceCall['type'] . $backtraceCall['function']; } else { return $backtraceCall['function']; } } } |