PHP使用new StdClass()创建空对象的方法分析


Posted in PHP onJune 06, 2017

本文实例讲述了PHP使用new StdClass()创建空对象的方法。分享给大家供大家参考,具体如下:

PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。

很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符['xxx']要方便不少。于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中。

然而PHP中没有Javascript里面 var object = {}; 这样的语法。

PHP创建空对象至少可以使用3种方法实现

方法一:写一个空类

勉强能完成任务,但是特别没有格局。

<?php
  class cfg {
  }
  $cfg = new cfg;
  $cfg->dbhost = '3water.com';
  echo $cfg->dbhost;
?>

方法二:实例化 StdClass 类

StdClass类是PHP中的一个基类,然而比较诡异的是PHP手册里面血几乎没有提到过这个类,至少在PHP索引中是搜索不到这个类的。

StdClass类没有任何成员方法,也没有任何成员属性,实例化以后就是一个空对象。

<?php
  $cfg = new StdClass();
  $cfg->dbhost = '3water.com';
  echo $cfg->dbhost;
?>

方法三:折腾json_encode()和json_decode()

这种方法就是把一个空的JSON对象通过json_decode()转变为PHP的StdClass空对象。

同样的道理,你可以将一个数组通过json_encode()转成JSON,再通过json_decode()将JSON转为StdClass对象,

关于这两个函数,可以参考PHP手册。

<?php
  $cfg = json_decode('{}');
  $cfg->dbhost = '3water.com';
  echo $cfg->dbhost;
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Fatal error: Call to undefined function curl_init()解决方法
Apr 09 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
php 冒泡排序 交换排序法
May 10 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
php猴子选大王问题解决方法
May 12 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
php 7新特性之类型申明详解
Jun 06 #PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 #PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 #PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 #PHP
PHP实现向关联数组指定的Key之前插入元素的方法
Jun 06 #PHP
PHP培训要多少钱
Jun 06 #PHP
Mac系统完美安装PHP7详细教程
Jun 06 #PHP
You might like
php中simplexml_load_string使用实例分享
2014/02/13 PHP
php实现webservice实例
2014/11/06 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
基于python的列表list和集合set操作
2019/11/24 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
关于Java String的一道面试题
2013/09/29 面试题
采购类个人求职的自我评价
2014/02/18 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
汽车专业求职信
2014/06/05 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
公司2014年度工作总结
2014/12/10 职场文书
宣传委员竞选稿
2015/11/19 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android