我闲逛PHP的铸造机制,和铸造数组作为对象铸造用数字键数组作为对象
$o = (object) array('1'=>'/foo/bar');
$o = new stdClass();
var_dump($o);
据我所知,PHP属性必须时遇到了一个奇数的情况下用与PHP变量相同的规则声明。那是A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores。然而,上面的代码将产生以下输出
object(stdClass)#1 (1) {
[1]=>
string(8) "/foo/bar"
}
它变得很奇怪的是,当您尝试访问的对象的信息。
var_dump($o->1); // parse error
var_dump($o->{'1'}); // NULL
var_dump(get_object_vars($o)); //array(0) { }
反正是有得到的是后续代码var_dump报告中的信息是在对象,或者它只是锁定为请求生命周期的休息吗? (这实际使用中是零,我只是好奇)
从我的经验看来,他们都锁起来,虽然我从来没有足够的坚定尝试一切。 – jlb 2009-12-08 21:05:33
事实上,这是PHP中的一个已知问题。 – GSto 2009-12-08 21:38:38
这就是我们所知道的,或者被PHP团队以某种方式称为已知的。 – 2009-12-08 21:45:17