Skip to content

Commit 98c4b5f

Browse files
committed
ensure compatibility with PHP 8 stack traces
1 parent 13982b5 commit 98c4b5f

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -275,10 +275,18 @@ public static function throwOnRequiredClass($class)
275275
'function' => 'spl_autoload_call',
276276
'args' => [$class],
277277
];
278-
$i = 1 + array_search($autoloadFrame, $trace, true);
279278

280-
if (isset($trace[$i]['function']) && !isset($trace[$i]['class'])) {
281-
switch ($trace[$i]['function']) {
279+
if (\PHP_VERSION_ID >= 80000 && isset($trace[1])) {
280+
$callerFrame = $trace[1];
281+
$i = 2;
282+
} elseif (false !== $i = array_search($autoloadFrame, $trace, true)) {
283+
$callerFrame = $trace[++$i];
284+
} else {
285+
throw $e;
286+
}
287+
288+
if (isset($callerFrame['function']) && !isset($callerFrame['class'])) {
289+
switch ($callerFrame['function']) {
282290
case 'get_class_methods':
283291
case 'get_class_vars':
284292
case 'get_parent_class':

src/Symfony/Component/Config/Resource/ClassExistenceResource.php

+10-5
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)