理解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详细彻底学习Smarty
Mar 27 PHP
php IP及IP段进行访问限制的代码
Dec 17 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
php中bind_param()函数用法分析
Mar 28 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
document.open() 与 document.write()的区别
2007/08/13 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python抓取京东图书评论数据
2014/08/31 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
模具设计与制造专业应届生求职信
2013/10/18 职场文书
演讲稿格式
2014/04/30 职场文书
供用电专业求职信
2014/07/07 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python