在PHP中,如果没有事先准备好的class,我们需要创建一个undefinedclass的对象,可以使用以下三种方法:newstdClass()newclass{}(object)[]首先是stdClass,这个类是一个空的类模板,是PHP内部的保留关键字和类名。可以类比Java中的Object基类。在Java中,所有的类都自然地继承自Object基类。PHP中的stdClass完全是一个空的类模板。您自己新创建的类不是它的子类。但是使用这个类模板,你可以创建一个属于它自己的未定义类的对象。当然,这个对象里面什么也没有。$a=newstdClass();var_dump($a);新类{}怎么样?经过一段时间的开发,接触过前端js等动态语言的应该能猜到这是一个匿名类。一般在参数对象中通用。它创建的对象可以有属性方法。$b=新类{public$p=1;};var_dump($b);我们看到的最后一件事是通过将数组强制转换为对象来生成对象。$c=(object)['p'=>1];var_dump($c);显然,强制数组转换形式生成的对象与第一个对象是同类型的,可以带属性也可以不带。但是,它不能采用方法。数组转换方式生成的对象非常直观易懂。如果只是对属性对象的封装,用这个方法会更加优雅和舒服。可以使用匿名类生成复杂的对象生成。对于一些只需要占用空间的对象,可以使用stdClass方法。当然,使用空数组也很方便。需要注意的是,数组强制转换需要遵守类型转换的规则。比如下标号的问题。在日常开发中,我们在使用一些接口或者数据库ORM框架的时候,经常会用到这些函数。比如一些ORM框架的插入修改需要传入只包含属性的对象。这时候就可以使用上面的方法灵活生成对象,而无需完全定义类模板。测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%88%9B%E5%BB%BA%E6%9C%AA%E5%AE%9A%E4%B9%89PHP%E5%AF%B9%E8%B1%A1.php参考:https://www.php.phpnet/manual/zh/language.types.object.php#117149
