В PHP какая разница между get_called_class()
и get_class($this)
при использовании внутри экземпляра?
Пример:
class A { function dump() { echo get_called_class(); echo get_class($this); } } class B extends A {} $A = new A(); $B = new B(); $A->dump(); // output is 'AA' $B->dump(); // output is 'BB'
Есть ли разница в этом случае?
Когда я должен использовать один или другой get_called_class()
или get_class($this)
?
В этом случае нет никакой разницы, потому что $this
всегда указывает на правильный экземпляр, из которого имя класса разрешено с помощью get_class()
.
Функция get_called_class()
предназначена для статических методов. Когда статические методы переопределяются, эта функция возвращает имя класса, которое предоставляет контекст для текущего метода, который вызывается.
Для гораздо более быстрой альтернативы get_called_class()
в PHP> = 5.5 используйте static::class
. Он работает, чтобы получить класс верхнего уровня для вызовов статических методов, а также для унаследованных методов.
Не в этом случае … если дамп был статическим методом и исключил $this
параметр, то get_class вернул бы «A» в обоих случаях, и get_called_class вернул бы «B», когда вы сделали B::dump();
В этом случае нет никакой разницы, оба возвращают имя класса, но get_called _class имеет Late Static Binding
Ответ в этом конкретном случае: NO .
Нет никакой разницы.
Ссылка: ( http://php.net/manual/en/function.get-class.php )
string get_class ([object $ object = NULL])
…
Если объект отсутствует в классе, возвращается имя этого класса.