added skipping of library classes in error traces
This commit is contained in:
		| @@ -213,9 +213,10 @@ class ErrorHandler { | ||||
| 		$traceString = ''; | ||||
| 		$stepCount   = 0; | ||||
| 		foreach ($backtrace as $traceStep) { | ||||
| 			$skipStep = $this->shouldSkipTraceStep($traceStep); | ||||
| 			$traceString .= '#' . $stepCount . ': '; | ||||
| 			if (isset($traceStep['class'])) { | ||||
| 				if (!$sourceClass && strpos($traceStep['class'], '\\FaultException') === false && strpos($traceStep['class'], '\\ErrorHandler') === false) { | ||||
| 				if (!$skipStep && !$this->isIgnoredSourceClass($traceStep['class'])) { | ||||
| 					$sourceClass = $traceStep['class']; | ||||
| 				} | ||||
| 				$traceString .= $traceStep['class']; | ||||
| @@ -225,16 +226,16 @@ class ErrorHandler { | ||||
| 			} | ||||
| 			if (isset($traceStep['function'])) { | ||||
| 				$traceString .= $traceStep['function'] . '('; | ||||
| 				if (isset($traceStep['args'])) { | ||||
| 				if (isset($traceStep['args']) && !$skipStep) { | ||||
| 					$traceString .= $this->parseArgumentsArray($traceStep['args']); | ||||
| 				} | ||||
| 				$traceString .= ')'; | ||||
| 			} | ||||
| 			if (isset($traceStep['file'])) { | ||||
| 			if (isset($traceStep['file']) && !$skipStep) { | ||||
| 				$traceString .= ' in File '; | ||||
| 				$traceString .= $traceStep['file']; | ||||
| 			} | ||||
| 			if (isset($traceStep['line'])) { | ||||
| 			if (isset($traceStep['line']) && !$skipStep) { | ||||
| 				$traceString .= ' on Line '; | ||||
| 				$traceString .= $traceStep['line']; | ||||
| 			} | ||||
| @@ -249,6 +250,35 @@ class ErrorHandler { | ||||
| 		return $traceString; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Check if the given Trace Step should be skipped | ||||
| 	 * | ||||
| 	 * @param array $traceStep | ||||
| 	 * @return bool | ||||
| 	 */ | ||||
| 	private function shouldSkipTraceStep(array $traceStep) { | ||||
| 		if (isset($traceStep['class'])) { | ||||
| 			$skippedClasses = array('Symfony', 'cURL'); | ||||
| 			foreach ($skippedClasses as $skippedClass) { | ||||
| 				if (strpos($traceStep['class'], $skippedClass) !== false) { | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Check if the given Class Name should be ignored as possible Error Source Class | ||||
| 	 * | ||||
| 	 * @param string $class | ||||
| 	 * @return bool | ||||
| 	 */ | ||||
| 	private function isIgnoredSourceClass($class) { | ||||
| 		return (!$class || strpos($class, '\\FaultException') !== false || strpos($class, '\\ErrorHandler') !== false); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Build a String from an Arguments Array | ||||
| 	 * | ||||
|   | ||||
		Reference in New Issue
	
	Block a user