Как определить, статичен ли я или объект?

Кто-нибудь знает от руки способ сказать, вызывается ли меня статически (Classname::function) или внутри объекта ($classInstance->function) внутри метода PHP?

2 ответа

Решение

По общему признанию не случайно, но у Шона Коутса есть прохладный и довольно простой подход к выяснению этого:

$isStatic = !(isset($this) && get_class($this) == __CLASS__);

Проверить, если $this установлен и равен классу. Он будет равен для вызова экземпляра и не равен (или равен нулю) для статического вызова.

Другие вопросы по тегам