专栏首页编程理解PHP中的stdClass类

理解PHP中的stdClass类

相信大家跟我一样,会经常看到和下面很类似的PHP代码:

复制代码

$user = new stdClass();

$user->name = 'gouki';

这样的代码,这是干嘛用的呢?

翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。

其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何说明。

或者,我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。

凡是用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。

或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。

例如:

复制代码

$user = new stdClass();

$user->name = 'gouki';

$myUser = $user;

$myUser->name = 'flypig';

如果在PHP4时代,这样的代码就是在消耗系统资源。因为:

$myUser = $user;

这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:

复制代码

$myUser = & $user;

有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。

确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )

不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦。

本文来自企鹅号 - AlanyPHP媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WebApi client 的面向切面编程

    .Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服...

    企鹅号小编
  • 2018年科技带给我们的新惊喜

    2017年,诸多创新在科技史上留下浓墨重彩的一笔。一些科幻电影中描绘的未来场景,已出现在现实生活中。 新的一年,那些技术突破会给人们带来新的惊喜呢? ? 人工智...

    企鹅号小编
  • 试验距离短、速度慢、仍有驾驶员,首次无人驾驶公交是噱头?

    “后面的乘客往里挤挤,里面还很空。”想必这样的话语大家都再熟悉不过了,没错,这就是公交车司机的全国统一话术。但是,这样话语可能几年、十几年以后你再也不会听到了,...

    企鹅号小编
  • Shiro系列 | 《Shiro开发详细教程》第三章:Shiro授权流程-下

    subject.checkPermissions("user:update");

    码神联盟
  • SpringMVC response返回参数绑定

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 基于jsp+servlet图书管理系统之后台用户信息修改操作

    上一篇的博客写的是查询操作,且附有源码和数据库,这篇博客写的是修改操作,附有从头至尾写的代码(详细的注释)和数据库!  此次修改操作的源码和数据库:http:...

    别先生
  • NodeJS使用mssql连接SQLServer出现"Incorrect syntax near the keyword \'user\'."

    最近使用NodeJS的mssql模块连接SQLServer数据库出现了"Incorrect syntax near the keyword ‘user’."的错...

    ccf19881030
  • 观察者模式

    当对象之间有一对多关系我们会用到观察者模式。具体来说当多个对象依赖某个对象时,需要使用观察者模式。

    渔父歌
  • Go基础之--位操作中你所不知道的用法

    之前一直忽略的就是所有语言中关于位操作,觉得用处并不多,可能用到也非常简单的用法,但是其实一直忽略的是它们的用处还是非常大的,下面先回顾一下位操作符的基础 位操...

    coders
  • 史上最简单的druid开启AOP事务教程

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1149268

扫码关注云+社区

领取腾讯云代金券