以下のようなPHPで、
class class_var_a { public $a = 1; public $aa = 'aaa'; public function __construct() { $a = 2; $aa = 'a2'; } } $i = new class_var_a(); $i_classname = get_class($i); $p = get_class_vars($i_classname); print_r($p);
コンストラクタはget_class_vars
でクラスのデフォルト値を取得する上で全く関わらないようですが、これはget_class_vars
はクラスの定義文の記述内容の中のプロパティを直接定義している部分(public $a = 1;
とpublic $aa = 'aaa';
)しか見ていないからということでしょうか。
侍エンジニアのサイトで勉強していますが、そこでは「get_class_vars関数は、実行時のスコープから参照できる範囲の値を取得」することが、コンストラクタが無視される理由であると説明されていますが、この説明が理解できませんでした。
スコープは単に変数の取り得る値の範囲のことだと思っています。
コンストラクタで書き換えてもそれはデフォルト値が変更されたわけではないから、get_class_vars
で無視されると思っておけばいいのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/09 20:21