最近看到类似的PHP代码:
<?php
$user = new stdClass();
$user->name = '张三';
第一看到这样的代码,有点蒙圈,这个stdClass在哪声明的呢?这个类是干嘛用的呢?
上网查了一下,其实我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个对象。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$demo->test()这种方式的使用。
或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
例如:
<?php
$user = new stdClass();
$user->name = '张三';
$myUser = $user;
$myUser->name = '李四';
如果在PHP4时代,这样的代码就是在消耗系统资源。因为:$myUser = $user;这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:
<?php
$myUser = & $user;
有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦。