Жил не тужил на PHP 5.5. Решил перейти на 7.1. И тут же вылезла проблема с debug_backtrace'ом.
Суть в чем: реализовал я свой
Enum (
примеры). Чтобы узнать класс вызова использовал debug_backtrace при статическом вызове неизвестного метода. в PHP 5 все нормально, класс вызова есть, 7.1 нет.
Пример:
abstract class A {
public static function __callstatic($name, $arguments) {
print_r(debug_backtrace());
}
}
class B extends A {
}
B::foo();
PHP 5.5:
Array
(
[0] => Array
(
[file] => E:\sites\apico-sms\scripts\other\trace.php
[line] => 12
[function] => __callstatic
[class] => A
[type] => ::
[args] => Array
(
[0] => foo
[1] => Array
(
)
)
)
[1] => Array
(
[file] => E:\sites\apico-sms\scripts\other\trace.php
[line] => 12
[function] => foo
[class] => B
[type] => ::
[args] => Array
(
)
)
)
PHP 7.1:
Array
(
[0] => Array
(
[file] => E:\sites\apico-sms\scripts\other\trace.php
[line] => 12
[function] => __callstatic
[class] => A
[type] => ::
[args] => Array
(
[0] => foo
[1] => Array
(
)
)
)
)
Вопрос. Можно ли каким-нибудь образом в 7.1 получить имя класса
B, как это получалось в 5.5?