PHP中的stdClass是一個PHP的內置類,基本上是所有類的基類。它的特點是它里面沒有任何方法。它的作用是把一個非object類型數據轉化為object類型數據。
下面是一個把數組轉化為object類型數據的函數:(也可以用PHP的類型強制轉換)
function arrayToObject($array) { if(!is_array($array)) { return $array; } $object = new stdClass(); if (is_array($array) && count($array) > 0) { foreach ($array as $name=>$html' target='_blank'>value) { $name = strtolower(trim($name)); if (isset($name)) { $object->$name = arrayToObject($value); } } return $object; } else { return FALSE; } }
stdclass可以作為基類使用,其最大特點是,(其派生類)可以自動添加成員變量,而無須在定義時說明。
一切php變量都是 stdClass 的實例
如
class ccs extends stdClass { var $v1; function ccs(){ $this->v1=1; } }; $ee= new ccs(); $ee->v2=2;
上面的代碼不會出錯。這帶來了很大的方便性,當然,也有一定的不安全因素。
另外,這個功能也解決了我長期以來的一個疑惑,就是像mysql_fetch_object這樣的函數是如何實現的。
因為它是所有類的基類,我們不繼承,驗證下:
class A{ public function set($name) { $this->name=$name; } } $obja=new A; $obja->set("hehe"); var_dump($obja);
輸出結果:
object(A)#2 (1) { ["name"]=> string(4) "hehe" }
答案正確。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答