PHPで深い位置のプロパティに、いきなり値を代入したいが
次のようなコードでは、警告が発生してしまう。
$a = new stdClass;
$a->b->c = 1; //代入はできるが警告が出る
マジックメソッド__get()
を利用することで、目的が達成できた。
class exClass{
function __get($name){
$this->$name = new self;
return $this->$name;
}
}
$a = new exClass;
$a->b->c = 1; //成功
ただし問題があって、未定義のプロパティをgetした場合は、exClassオブジェクトが返ってくる。