请定义什么是stdClass。
当前回答
stClass是一个由php自己创建的空类,只能由php使用。 因为它不仅仅是一个“空”类, php使用stdClass将数组转换为对象样式 如果你需要使用stdClass,我推荐两个更好的选择: 1-使用数组(比类快得多) 2-创建你自己的空类并使用它
//example 1
$data=array('k1'=>'v1' , 'k2'=>'v2',....);
//example 2
//creating an empty class is faster than instances an stdClass
class data={}
$data=new data();
$data->k1='v1';
$data->k2='v2';
是什么让人们考虑使用对象样式而不是数组样式??
其他回答
如果您想快速创建一个新对象来保存关于一本书的一些数据。你会这样做:
$book = new stdClass;
$book->title = "Harry Potter and the Prisoner of Azkaban";
$book->author = "J. K. Rowling";
$book->publisher = "Arthur A. Levine Books";
$book->amazon_link = "http://www.amazon.com/dp/0439136369/";
详情请查看网站http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/。
stdClass不是匿名类或匿名对象
这里的答案包括stdClass是匿名类甚至匿名对象的表达式。这不是真的。
stdClass只是一个常规的预定义类。你可以使用instanceof操作符或函数get_class来检查。这里没什么特别的。PHP在将其他值强制转换为对象时使用这个类。
在程序员使用stdClass的许多情况下,数组是更好的选择,因为它有有用的函数,而且这个用例表示的是数据结构,而不是真正的对象。
实际上,我尝试创建空的stdClass,并将速度与空类进行比较。
class emp{}
然后继续创建1000个stdClasses和emps…空类在1100微秒左右完成,而stdClasses在1700微秒以上完成。所以我想最好创建自己的虚拟类来存储数据,如果你想使用对象那么糟糕(数组写和读都快得多)。
同样的,
$myNewObj->setNewVar = 'newVal';
生成一个stdClass对象-自动强制转换
我今天把这个单词拼错了:
$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';
太酷了!
同样值得注意的是,还可以使用json_decode()创建stdClass对象。
推荐文章
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- PHP/MySQL插入一行然后获取id
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- Json_encode()转义正斜杠
- 如何在PHP中捕获cURL错误
- 如何要求一个分叉与作曲家?
- 如何在php中创建可选参数?
- 在文本文件中创建或写入/追加
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 如何从一个查询插入多行使用雄辩/流利
- 在PHP单元测试执行期间,如何在CLI中输出?