Проверьте, является ли предоставленный аргумент "обратного вызова" статическим - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть функция, которая принимает аргумент "обратного вызова". Это может быть либо функция, либо метод статического класса.

Как я могу определить, является ли метод статическим или нет?

1 Ответ

2 голосов
/ 07 февраля 2012

Полагаю, вы могли бы сделать это с помощью отражения, хотя это будет медленно .

Предполагается, что ваш обратный вызов $callback:

if (is_array($callback)) { // a function will just be a string
    $classname = $callback[0];
    $methodname = $callback[1];

    $method = new ReflectionMethod($classname, $methodname);

    if ($method->isStatic()) {
        // method is static
    }
}

Обратите внимание, что не учитывает случаев, когда $callback[0] является объектом, или если у вас есть лямбда-функция как $callback, или, возможно, всевозможных различных обстоятельствах. Я не очень понимаю, что вы ищете; этого может быть достаточно.

...