Refactor getTraceString and add call type determination.

This commit is contained in:
netkas 2024-11-05 15:48:19 -05:00
parent b6417cba97
commit e927c7a8ec
2 changed files with 72 additions and 21 deletions

View file

@ -165,7 +165,6 @@
}
$backtrace = $event->getBacktrace()[count($event->getBacktrace()) - 1];
// Ignore \LogLib namespace
if (isset($backtrace['class']) && str_starts_with($backtrace['class'], 'LogLib'))
{
@ -175,11 +174,10 @@
{
return "\033[1;37m" . basename($backtrace['file']) . "\033[0m";
}
return basename($backtrace['file']);
}
return basename($backtrace['file']);
return self::determineCallType($event->getBacktrace())->value; // Return a placeholder value
}
if ($backtrace['function'] === '{closure}')
@ -194,7 +192,7 @@
return basename($backtrace['file']) . CallType::STATIC_CALL->value . CallType::LAMBDA_CALL->value;
}
return basename($backtrace['file']) . CallType::STATIC_CALL->value . CallType::LAMBDA_CALL->value;
return self::determineCallType($event->getBacktrace())->value . CallType::STATIC_CALL->value . CallType::LAMBDA_CALL->value; // Adjusted to handle missing 'file'
}
if ($backtrace['function'] === 'eval')
@ -208,8 +206,7 @@
return basename($backtrace['file']) . CallType::STATIC_CALL->value . CallType::EVAL_CALL->value;
}
return basename($backtrace['file']) . CallType::STATIC_CALL->value . CallType::EVAL_CALL->value;
return self::determineCallType($event->getBacktrace())->value . CallType::STATIC_CALL->value . CallType::EVAL_CALL->value; // Adjusted to handle missing 'file'
}
if ($ansi)
@ -244,6 +241,32 @@
return "{$class}{$type->value}{$function}" . CallType::FUNCTION_CALL->value;
}
/**
* Determines the type of call based on the provided backtrace.
*
* @param array $backtrace The backtrace information of the calling code.
* @return CallType The type of call detected.
*/
private static function determineCallType(array $backtrace): CallType
{
if(BacktraceParser::fromErrorHandler($backtrace))
{
return CallType::ERROR_HANDLER;
}
if(BacktraceParser::fromExceptionHandler($backtrace))
{
return CallType::EXCEPTION_HANDLER;
}
if(BacktraceParser::fromShutdownHandler($backtrace))
{
return CallType::SHUTDOWN_HANDLER;
}
return CallType::UNKNOWN_FILE;
}
/**
* Converts an exception object to an array representation.
*

View file

@ -38,4 +38,32 @@
* @var string EVAL_CALL
*/
case EVAL_CALL = 'eval()';
/**
* Represents an unknown file.
*
* @var string UNKNOWN_FILE
*/
case UNKNOWN_FILE = '?';
/**
* Represents a runtime error handler.
*
* @var string ERROR_HANDLER
*/
case ERROR_HANDLER = 'RUNTIME_ERROR';
/**
* Represents a shutdown handler event.
*
* @var string SHUTDOWN_HANDLER
*/
case SHUTDOWN_HANDLER = 'SHUTDOWN_ERROR';
/**
* Represents an exception handler for runtime exceptions.
*
* @var string EXCEPTION_HANDLER
*/
case EXCEPTION_HANDLER = 'RUNTIME_EXCEPTION';
}