理解PHP中的stdClass类


Posted in PHP onApril 18, 2014

相信大家跟我一样,会经常看到和下面很类似的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,可以直接将数组转化为对象这也是一个好办法哦。
PHP 相关文章推荐
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
PHP 中关于ord($str)>0x80的详细说明
Sep 23 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
php实现购物车功能(上)
Jul 23 PHP
php array_keys 返回数组的键名
Oct 25 PHP
php中bind_param()函数用法分析
Mar 28 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PDO::_construct讲解
Jan 27 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 #PHP
php实现的漂亮分页方法
Apr 17 #PHP
codeigniter中测试通过的分页类示例
Apr 17 #PHP
php生成静态页面的简单示例
Apr 17 #PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 #PHP
php实现12306余票查询、价格查询示例
Apr 17 #PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 #PHP
You might like
php 高效率写法 推荐
2010/02/21 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
PDO::commit讲解
2019/01/27 PHP
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
Python制作Windows系统服务
2017/03/25 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Python常用库大全及简要说明
2020/01/17 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
P/Invoke是什么
2015/07/31 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
自主招生自荐书
2013/11/29 职场文书
学校安全教育制度
2014/01/31 职场文书
大专会计自我鉴定
2014/02/06 职场文书
后备干部考察材料
2014/02/12 职场文书
自我推荐信范文
2014/05/09 职场文书
班风口号
2014/06/18 职场文书
小学生毕业评语
2014/12/26 职场文书
教师个人师德总结
2015/02/06 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
关爱空巢老人感想
2015/08/11 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
Spring Boot实现文件上传下载
2022/08/14 Java/Android