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 相关文章推荐
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
解析yii数据库的增删查改
Jun 20 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
PHP实现货币换算的方法
Nov 29 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php计算函数执行时间的方法
Mar 20 PHP
apache和PHP如何整合在一起
Oct 12 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP的PDO预处理语句与存储过程
Jan 27 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 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/10/09 PHP
php多文件上传下载示例分享
2014/02/20 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
Laravel下生成验证码的类
2017/11/15 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python如何获取列表中每个元素的下标位置
2019/07/01 Python
通过代码实例了解Python sys模块
2020/09/14 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
如何查找网页漏洞
2016/06/22 面试题
安全生产责任书
2014/03/12 职场文书
2015年档案室工作总结
2015/05/23 职场文书
运动会800米赞词
2015/07/22 职场文书
会议室使用管理制度
2015/08/06 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书