Skip to content

Commit acdf1bc

Browse files
committed
ensure compatibility with PHP 8 stack traces
1 parent e4767e5 commit acdf1bc

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

Resource/ClassExistenceResource.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,17 @@ public static function throwOnRequiredClass($class, \Exception $previous = null)
190190
'args' => [$class],
191191
];
192192

193-
if (false === $i = array_search($autoloadFrame, $trace, true)) {
193+
if (\PHP_VERSION_ID >= 80000 && isset($trace[1])) {
194+
$callerFrame = $trace[1];
195+
$i = 2;
196+
} elseif (false !== $i = array_search($autoloadFrame, $trace, true)) {
197+
$callerFrame = $trace[++$i];
198+
} else {
194199
throw $e;
195200
}
196201

197-
if (isset($trace[++$i]['function']) && !isset($trace[$i]['class'])) {
198-
switch ($trace[$i]['function']) {
202+
if (isset($callerFrame['function']) && !isset($callerFrame['class'])) {
203+
switch ($callerFrame['function']) {
199204
case 'get_class_methods':
200205
case 'get_class_vars':
201206
case 'get_parent_class':
@@ -214,8 +219,8 @@ public static function throwOnRequiredClass($class, \Exception $previous = null)
214219
}
215220

216221
$props = [
217-
'file' => isset($trace[$i]['file']) ? $trace[$i]['file'] : null,
218-
'line' => isset($trace[$i]['line']) ? $trace[$i]['line'] : null,
222+
'file' => isset($callerFrame['file']) ? $callerFrame['file'] : null,
223+
'line' => isset($callerFrame['line']) ? $callerFrame['line'] : null,
219224
'trace' => \array_slice($trace, 1 + $i),
220225
];
221226

0 commit comments

Comments
 (0)