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" }
答案正确。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答