理解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 08 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
深入分析php之面向对象
May 15 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
Linux下创建nginx脚本-start、stop、reload…
Aug 03 PHP
php备份数据库类分享
Apr 14 PHP
ThinkPHP路由详解
Jul 27 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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插件 HTMLPurifier HTML解析器
2013/07/01 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
js实现购物车功能
2018/06/12 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
python django集成cas验证系统
2014/07/14 Python
Python反射的用法实例分析
2018/02/11 Python
Python延时操作实现方法示例
2018/08/14 Python
python写入文件自动换行问题的方法
2019/07/05 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
详解Python IO编程
2020/07/24 Python
美的官方商城:Midea
2016/09/14 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
函授毕业个人自我评价
2014/02/20 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
委托收款证明
2015/06/23 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
新郎婚礼致辞
2015/07/27 职场文书
公司财务管理制度
2015/08/04 职场文书