問題:以下に示すように PHP を拡張しようとしていArrayObject
ます。残念ながら、多次元オブジェクトを設定するときに正しく動作させることができず、PHP で厳密な設定を有効にしているため、代わりにエラーがスローされます。( Error: Strict standards: Creating default object from empty value
)
質問:クラスを変更して、存在しないレベルを自動的に作成するにはどうすればよいですか?
コード:
$config = new Config;
$config->lvl1_0 = true; // Works
$config->lvl1_1->lvl2 = true; // Throws error as "lvl1" isn't set already
class Config extends ArrayObject
{
function __construct() {
parent::__construct(array(), self::ARRAY_AS_PROPS);
}
public function offsetSet($k, $v) {
$v = is_array($v) ? new self($v) : $v;
return parent::offsetSet($k, $v);
}
}