• stdClass 是一个类,
    • 它是一个空类,
    • 其中没有成员方法,没有成员属性。
    • 几乎所有的类都继承了这个类。所以在任何地方 new stdClass() 都是正确的。
    • stdClass对象在任何地方被调用,都是引用地址型的。使用方便,节省资源。

    运行下面这段代码

    1. <?php
    2. $user = new stdClass();
    3. $user->name = '向上';
    4. $user->age = 24;
    5. $s = $user;
    6. $s->name = 'XS';
    7. var_dump($s);
    8. var_dump($user);

    运行结果
    image.png

    a.当改变了 $s 中 name 的属性值后,$user 的属性值也被改了。所以,stdClass对象在任何地方被调用,都是引用地址型的. 相当于 $s = &$user;

    b.在一定程度上不仅使用更为方便,而且还节省了内存空间。

    c.数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本。而且数组被unset后,还是占用了内存(释放的内存存到php缓存区中,避免新的变量再去申请新的内存空间,直接使用php缓存区的内存)


    有时候我们会这样使用数组

    1. <?php
    2. $user = new stdClass();
    3. $user->name = '向上';
    4. $user->age = 24;
    5. $user->hobby = 'swimming';
    6. $arr = get_object_vars($user); //使用 get_object_vars() 方法最后将对象的属性转成一个数组。
    7. var_dump($arr);

    image.png