Add offset parameter to System::callstack

- Enable its use in centralized methods without polluting the stack
This commit is contained in:
Hypolite Petovan 2020-07-27 00:20:30 -04:00
parent 639e2b3892
commit 19141b1bcf

View file

@ -33,16 +33,17 @@ class System
/** /**
* Returns a string with a callstack. Can be used for logging. * Returns a string with a callstack. Can be used for logging.
* *
* @param integer $depth optional, default 4 * @param integer $depth How many calls to include in the stacks after filtering
* @param int $offset How many calls to shave off the top of the stack, for example if
* this is called from a centralized method that isn't relevant to the callstack
* @return string * @return string
*/ */
public static function callstack($depth = 4) public static function callstack(int $depth = 4, int $offset = 0)
{ {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
// We remove the first two items from the list since they contain data that we don't need. // We remove at least the first two items from the list since they contain data that we don't need.
array_shift($trace); $trace = array_slice($trace, 2 + $offset);
array_shift($trace);
$callstack = []; $callstack = [];
$previous = ['class' => '', 'function' => '', 'database' => false]; $previous = ['class' => '', 'function' => '', 'database' => false];