- stdClass 是一个类,
- 它是一个空类,
- 其中没有成员方法,没有成员属性。
- 几乎所有的类都继承了这个类。所以在任何地方 new stdClass() 都是正确的。
- stdClass对象在任何地方被调用,都是引用地址型的。使用方便,节省资源。
运行下面这段代码
<?php
$user = new stdClass();
$user->name = '向上';
$user->age = 24;
$s = $user;
$s->name = 'XS';
var_dump($s);
var_dump($user);
运行结果
a.当改变了 $s 中 name 的属性值后,$user 的属性值也被改了。所以,stdClass对象在任何地方被调用,都是引用地址型的. 相当于 $s = &$user;
b.在一定程度上不仅使用更为方便,而且还节省了内存空间。
c.数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本。而且数组被unset后,还是占用了内存(释放的内存存到php缓存区中,避免新的变量再去申请新的内存空间,直接使用php缓存区的内存)
有时候我们会这样使用数组
<?php
$user = new stdClass();
$user->name = '向上';
$user->age = 24;
$user->hobby = 'swimming';
$arr = get_object_vars($user); //使用 get_object_vars() 方法最后将对象的属性转成一个数组。
var_dump($arr);