理解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类
Jul 15 PHP
支持php4、php5的mysql数据库操作类
Jan 10 PHP
php 随机生成10位字符代码
Mar 26 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php删除数组中重复元素的方法
Dec 22 PHP
PHP简单日历实现方法
Jul 20 PHP
php面向对象的用户登录身份验证
Jun 08 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 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的源码中深入了解stdClass类
2014/04/18 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
php验证码生成器
2017/05/24 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
总结Python中逻辑运算符的使用
2015/05/13 Python
python实现神经网络感知器算法
2017/12/20 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python字符串常用方法
2018/06/14 Python
深入了解python中元类的相关知识
2019/08/29 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
学生会竞选自荐信
2013/10/12 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
施工安全协议书
2013/12/11 职场文书
函授药学自我鉴定
2014/02/07 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
《称赞》教学反思
2016/02/17 职场文书
2019年最新借条范本!
2019/07/08 职场文书
python中 Flask Web 表单的使用方法
2022/05/20 Python