array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'zh', ), 'this' => array ( 0 => 'function.get-class.php', 1 => 'get_class', ), 'up' => array ( 0 => 'ref.classobj.php', 1 => '类/对象 函数', ), 'prev' => array ( 0 => 'function.get-class-vars.php', 1 => 'get_class_vars', ), 'next' => array ( 0 => 'function.get-declared-classes.php', 1 => 'get_declared_classes', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'zh', 'path' => 'reference/classobj/functions/get-class.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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
warning;之前,在类内部调用此函数会返回该类的名称。
|
8.0.0 |
在类外不带任何参数调用此函数将会抛出 Error。之前会引发
E_WARNING 并且函数会返回 false 。
|
7.2.0 |
在此版本之前,object 的默认值是
null ,它与不传递任何值有相同的效果。object
已经移除了默认值 null 且不再是有效的输入。
|
示例 #1 使用 get_class()
<?php
class foo {
function name()
{
echo "My name is " , get_class($this) , "\n";
}
}
// 创建对象
$bar = new foo();
// 类外调用
echo "Its name is " , get_class($bar) , "\n";
// 类内调用
$bar->name();
?>
以上示例会输出:
Its name is foo My name is 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"