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 相关文章推荐
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
深入浅出php socket编程
May 13 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 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
JS实现php的伪分页
2008/05/25 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Vue非父子组件通信详解
2017/06/12 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
Python Nose框架编写测试用例方法
2017/10/26 Python
python中reader的next用法
2018/07/24 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
Hotels.com中国区:好订网
2016/08/18 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
小学教师自我鉴定
2013/11/07 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
个人工作年终总结
2015/03/09 职场文书
如何做好工作总结!
2019/04/10 职场文书