(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 | 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"