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 相关文章推荐
一个PHP模板,主要想体现一下思路
Dec 25 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
php use和include区别总结
Oct 13 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
php下MYSQL limit的优化
2008/01/10 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
jQuery 无刷新分页实例代码
2013/11/12 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
python制作mysql数据迁移脚本
2019/01/01 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
化学教师自荐信范文
2013/12/28 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
2016年十一促销广告语
2016/01/28 职场文书
python状态机transitions库详解
2021/06/02 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android