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 翻页 实例代码
Aug 07 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
php图像验证码生成代码
Jun 08 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
详解python中index()、find()方法
2019/08/29 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
python 实现超级玛丽游戏
2020/11/25 Python
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
儿园租房协议书范本
2014/12/02 职场文书
自荐信格式模板
2015/03/27 职场文书
国王的演讲观后感
2015/06/03 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python