В 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])
…
Если объект отсутствует в классе, возвращается имя этого класса.