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=>$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这样的函数是如何实现的。

阿里云-推广AD

因为它是所有类的基类,我们不继承,验证下:

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” }

答案正确。