get_class

オブジェクトのクラス名を返す

説明

string get_class(object $object = ?)

指定した object のクラス名を取得します。

パラメータ

object

調べるオブジェクト。

注意: object に明示的に null を渡すことは、 PHP 7.2.0 以降許されなくなり、E_WARNING レベルの警告が発生します。 PHP 8.0.0 以降では、null を渡すと TypeError がスローされます。

戻り値

オブジェクト 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 null は、object のデフォルトのパラメータとして 扱われなくなり、 正しい入力ではなくなりました。 これより前のバージョンでは、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"

参考

  • get_called_class
  • get_parent_class
  • gettype
  • get_debug_type
  • is_subclass_of