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 程序员应该使用的10个组件
Oct 31 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
php文件上传的简单实例
Oct 19 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 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
php链式操作的实现方式分析
2019/08/12 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
JS 强制设为首页的代码
2009/01/31 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
VueJS全面解析
2016/11/10 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
Python 导入文件过程图解
2019/10/15 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python 实现简单的FTP程序
2019/12/27 Python
Python接口测试get请求过程详解
2020/02/28 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
简单了解python列表和元组的区别
2020/05/14 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
北京振戎融通Java面试题
2015/09/03 面试题
《登鹳雀楼》教学反思
2014/04/09 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
道歉的话怎么说
2015/05/12 职场文书
2015年教研员工作总结
2015/05/26 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书