# get_class

(PHP 4, PHP 5, PHP 7)

get_class — 返回对象的类名

### 说明

get_class ([ object `$object` = `NULL` ] ) : string

返回对象实例 `object` 所属类的名字。

### 参数

`object`

  要测试的对象。如果在类里，此参数可以省略。

### 返回值

返回对象实例 `object` 所属类的名字。 如果 `object` 不是一个对象则返回 `FALSE`。

如果在一个类里，省略了参数 `object`， 则返回当前所在类的名称。

如果 `object` 是命名空间中某个类的实例，则会返回带上命名空间的类名。

### 错误／异常

如果用其他类型调用 get_class()，而不是一个对象的话，就会产生 `E_WARNING` 级别的错误。

### 更新日志

版本 | 说明
--- | ---
5.3.0 起 | `object` 默认参数现在是 `NULL` ，所以，现在传入 `NULL` 到 `object` 参数时，和没传参数的结果一样。

### 范例

Example #1 使用 get_class()

    <?php

    class foo {
        function name()
        {
            echo "My name is " , get_class($this) , "\n";
        }
    }

    // create an object
    $bar = new foo();

    // external call
    echo "Its name is " , get_class($bar) , "\n";

    // internal call
    $bar->name();

    ?>

以上例程会输出：

    Its name is foo
    My name is foo

Example #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"

Example #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"

### 参见

- get_called_class() - 后期静态绑定（"Late Static Binding"）类的名称
- get_parent_class() - 返回对象或类的父类名
- gettype() - 获取变量的类型
- is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE