我閒逛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