関数の概要
PHPの get_class_vars 関数は、指定したクラスに宣言されているすべてのプロパティとその初期値を連想配列で取得します。この関数は主にクラスの静的な情報を調べたいときに便利で、オブジェクトのインスタンスを生成せずにクラスのプロパティを確認できます。
パラメータの説明
class_name:プロパティを取得したいクラス名の文字列。名前空間を使用している場合は完全修飾名を指定します。
戻り値
指定したクラスのすべてのプロパティ名をキー、初期値を値とした連想配列を返します。アクセス修飾子が public のプロパティのみ取得可能です。protected や private なプロパティは含まれません。
使用例
基本的な使い方
<?php
class Sample {
public $name = "PHP";
public $version = 8.0;
protected $secret = "hidden";
private $token = "12345";
}
$vars = get_class_vars('Sample');
print_r($vars);
?>
出力結果は、public な $name と $version のみが含まれます。protected と private は取得できません。
名前空間付きのクラスで取得する例
<?php
namespace MyApp;
class User {
public $id = 1;
public $username = "admin";
}
$vars = get_class_vars('MyApp\User');
var_dump($vars);
?>
名前空間がある場合は、クラス名を完全修飾名(バックスラッシュ区切り)で指定する必要があります。
親クラスのプロパティも取得したい場合
<?php
class ParentClass {
public $parentProp = "parent";
}
class ChildClass extends ParentClass {
public $childProp = "child";
}
$vars = get_class_vars('ChildClass');
print_r($vars);
?>
この場合、子クラスと親クラスの public プロパティの両方が返されます。
関連する関数
get_object_vars:オブジェクトのすべての公開プロパティを取得するproperty_exists:特定のプロパティがクラスやオブジェクトに存在するかチェックするclass_exists:指定したクラス名のクラスが存在するかを判定する
まとめ
get_class_vars はクラスの public プロパティとその初期値を配列として取得するのに便利な関数です。オブジェクト生成前にクラスの構造を調べたい場合や、継承関係にあるクラスのプロパティを把握したいときに役立ちます。ただし、アクセス修飾子により protected や private プロパティは取得できないため、注意が必要です。
