PHP中STDCLASS用法实例分析


Posted in PHP onNovember 11, 2016

本文实例讲述了PHP中STDCLASS用法。分享给大家供大家参考,具体如下:

PHP中STDCLASS在我们开发应用中使用到的不多,但是PHP中STDCLASS作用是非常的大的,下面我们一起来看PHP中STDCLASS的用法.

在WordPress中很多地方使用stdClass来定义一个对象(而通常是用数组的方式),然后使用get_object_vars来把定义的对象『转换』成数组.

如下代码所示:

$tanteng = new stdClass();
$tanteng->name = 'tanteng';
$tanteng->email = 'xxx@qq.com';
$info = get_object_vars($tanteng);
print_r($info);
exit;

输出:

Array ( [name] => tanteng [email] => xxx@qq.com )

get_object_vars的作用是返回由对象属性组成的关联数组。它的效果跟这样定义数组其实是一样的:

$tanteng = array();
$tanteng['name'] = 'tanteng';
$tanteng['email'] = 'xxx@qq.com';

可以这样理解:stdClass是一个内置类,它没有成员变量,也没有成员方法的一个类,new一个stdClass就是实例化了一个『空』对象,它本身没什么意义,但是用stdClass定义有什么好处呢?

如下代码:

$user = new stdClass();
$user->name = 'gouki';
$user->hehe = 'hehe';
$myUser = $user;
$myUser->name = 'flypig';
print_r($user);
print_r($myUser);
print_r($user);

这里$myUser被赋值$user,但其实并没有新开辟一块内存存储变量,$myUser还是指的stdClass这个对象,通过$myUser改变属性页就改变了$user的属性,并不是新建一个副本,如果程序中有许多这样的操作,使用stdClass的方式可以节省内存开销.

运行结果:

stdClass Object
(
  [name] => flypig
  [hehe] => hehe
)
stdClass Object
(
  [name] => flypig
  [hehe] => hehe
)
stdClass Object
(
  [name] => flypig
  [hehe] => hehe
)

从结果可以看出,改变$myUser的属性确实改变了$user声明的stdClass属性,而如果$user是一个数组,赋值给$myUser,那就拷贝了一个副本给$myUser,这样增大系统开销.

当然,你也可以反过来,把一个数组转换为对象:

$hehe['he1'] = 'he1';
$hehe['he2'] = 'he2';
$hh = (object) $hehe;
print_r($hh);

打印结果:

stdClass Object ( [he1] => he1 [he2] => he2 )

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Codeigniter发送邮件的方法
Mar 19 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
PHP单态模式简单用法示例
Nov 16 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 #PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 #PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 #PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 #PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 #PHP
php事件驱动化设计详解
Nov 10 #PHP
PHP的消息通信机制测试实例
Nov 10 #PHP
You might like
关于时间计算的结总
2006/12/06 PHP
一个PHP分页类的代码
2011/05/18 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
javascript数组排序汇总
2015/07/07 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
深入理解python中的select模块
2017/04/23 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
Python Django搭建网站流程图解
2020/06/13 Python
如何利用python进行时间序列分析
2020/08/04 Python
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
认识深刻的检讨书
2014/02/16 职场文书
学雷锋倡议书
2015/01/19 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS