Intereting Posts
Как использовать сторонний пакет в Laravel? Проверьте, существует ли таблица MySQL или нет Лучшая практика, переопределяющая __construct () по сравнению с предоставлением метода init () Как перечислить все имя класса контроллера в codeigniter? Включение OpenSSL в XAMPP URL Переписывание строки запроса в php PDO: «Недопустимый номер параметра» при подстановке нескольких параметров с одинаковым значением Позвольте пользователю загрузить XML-файл Есть ли открытый код для создания «предварительного просмотра ссылок» и значков, например, в facebook? Запуск задания в фоновом режиме с Perl БЕЗ ожидания возврата Добавление класса current_page_item Предупреждение «Excel нашел нечитаемый контент» при открытии файлов Excel, сделанных с помощью PHPExcel Как я могу обнаружить и выжить, будучи «Slashdotted»? PHP Отправить письмо с вложением PDF без создания файла? Уникальные аргументы SendGrid для отдельных писем

PHP: get_called_class () vs get_class ($ this)

В 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) ?

Solutions Collecting From Web of "PHP: get_called_class () vs 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])

Если объект отсутствует в классе, возвращается имя этого класса.