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生成静态页
Nov 25 PHP
随时给自己贴的图片加文字的php水印
Mar 16 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
Laravel创建数据库表结构的例子
Oct 09 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 Javascript
php daodb插入、更新与删除数据
2009/03/19 PHP
php 字符串函数收集
2010/03/29 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
页面使用密码保护代码
2013/04/10 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
轮播的简单实现方法
2016/07/28 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
判断单链表中是否存在环
2012/07/16 面试题
环保倡议书400字
2014/05/15 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
导游词之西递宏村
2019/12/10 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
图神经网络GNN算法
2022/05/11 Python
Mysql如何查看是否使用到索引
2022/12/24 MySQL