(PHP 4, PHP 5, PHP 7, PHP 8)
get_class — Возвращает имя класса, которому принадлежит объект
Функция возвращает имя класса, которому принадлежит экземпляр object
.
Функция вернёт полное название пространства имён, если объект object
— экземпляр класса из пространства имён.
Функция get_class() выбрасывает исключение TypeError, если функцию вызывают не с объектом. До PHP 8.0.0 функция выдавала ошибку уровня E_WARNING
.
Функция get_class() выбрасывает исключение Error, если функцию вызывают вне класса без аргументов. До PHP 8.0.0 функция выдавала ошибку уровня E_WARNING
.
Версия | Описание |
---|---|
8.3.0 | Функция get_class() теперь выдаёт ошибку уровня E_DEPRECATED , если функцию вызвали без аргументов; раньше вызов функции внутри класса возвращал название класса. |
8.0.0 | Вызов функции вне класса без аргументов выбрасывает исключение Error. Раньше функция выдавала ошибку уровня E_WARNING и возвращала значение false . |
7.2.0 | До этой версии значением объекта object по умолчанию было значение null , и это давало тот же эффект, что и вызов функции без аргументов. Значение null удалили как значение по умолчанию для объекта object и оно больше не допустимо. |
Пример #1 Пример использования функции get_class()
<?php
class foo
{
function name()
{
echo "Меня зовут " , get_class($this) , "\n";
}
}
// Создаём объект
$bar = new foo();
// Внешний вызов
echo "Его имя " , get_class($bar) , "\n";
// Внутренний вызов
$bar->name();
?>
Результат выполнения приведённого примера:
Его имя foo Меня зовут foo
Пример #2 Вызов функции get_class() в родительском классе
<?php
abstract class bar
{
public function __construct()
{
var_dump(get_class($this));
var_dump(get_class());
}
}
class foo extends bar {}
new foo;
?>
Результат выполнения приведённого примера:
string(3) "foo" string(3) "bar"
Пример #3 Вызов функции get_class() с классами в пространствах имён
<?php
namespace Foo\Bar;
class Baz
{
public function __construct() {}
}
$baz = new \Foo\Bar\Baz;
var_dump(get_class($baz));
?>
Результат выполнения приведённого примера:
string(11) "Foo\Bar\Baz"