PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例


Posted in PHP onJune 12, 2019

本文实例讲述了PHP面向对象程序设计内置标准类,普通数据类型转为对象类型。分享给大家供大家参考,具体如下:

内置标准类

PHP中,有很多“现成的类”,其中有一个被称为“内置标准类”。这个类“内部”可以认为什么也没有。

class stdclass{ }
<?php
$obj1 = new stdclass();
var_dump($obj1);
class A{}
$obj2 = new A();
var_dump($obj2);
?>

运行结果:

object(stdClass)[1]

object(A)[2]

可以看到和普通类没什么区别。

内置标准类的作用是,用于存储一些临时的简单数据,如:

$obj1->pp1 = 1;
$obj2->port = '3306';

也可以在类型转换时用于存储数据。

对象的类型转换

其他数据类型转换为对象类型,得到的结果是:内置标准类(stdclass)的一个对象。

语法形式为:

$obj = (object)其他类型数据;

数组转换为对象:数组的键名当作属性名,值为对象对应的值。

注意:数字下标的数据元素,转换为对象后的属性,无法通过对象语法获取,因此不推荐转换。

<?php
$config = array(
  'host' => "localhost",
  'port' => 3306,
  'user' => "root",
  'pass' => "123",
  'charset' => "utf8",
  'dbname' => "yeoman",
);
$obj1 = (object)$config;
var_dump($obj1);
echo "<br />单独取出user:" . $obj1->user;
?>

运行结果:

object(stdClass)[1]
  public 'host' => string 'localhost' (length=9)
  public 'port' => int 3306
  public 'user' => string 'root' (length=4)
  public 'pass' => string '123' (length=3)
  public 'charset' => string 'utf8' (length=4)
  public 'dbname' => string 'yeoman' (length=6)

单独取出user:root

但是数组中有下标元素,转为对象的话,无法通过对象语法获取。

<?php
$arr = array('pp1' => 1, 5 => 12);
$obj2 = (object)$arr;
var_dump($obj2);
echo "<br />单独取出pp1:" . $obj2->pp1;
//echo "<br />单独取出5:" . $obj2->5;//会报错!
?>

运行结果:

$arr = array('pp1' => 1, 5 => 12);
$obj2 = (object)$arr;
var_dump($obj2);
echo "<br />单独取出pp1:" . $obj2->pp1;
//echo "<br />单独取出5:" . $obj2->5;//会报错!
?>

null转换为对象:空对象

$obj = (object)null;

其他标量数据转换为对象:属性名为固定的”scalar“,值为该变量的值

<?php
$v1 = 1;
$v2 = 2.2;
$v3 = "abc";
$v4 = true;
$objv1 = (object)$v1;  //整型转为对象类型
$objv2 = (object)$v2;  //浮点型转为对象类型
$objv3 = (object)$v3;  //字符串型为对象类型
$objv4 = (object)$v4;  //布尔转为对象类型
var_dump($objv1); echo "<br />";
var_dump($objv2); echo "<br />";
var_dump($objv3); echo "<br />";
var_dump($objv4); echo "<br />";

运行结果为:

object(stdClass)[1]
  public 'scalar' => int 1

object(stdClass)[2]
  public 'scalar' => float 2.2

object(stdClass)[3]
  public 'scalar' => string 'abc' (length=3)

object(stdClass)[4]
  public 'scalar' => boolean true

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

PHP 相关文章推荐
PHP脚本的10个技巧(7)
Oct 09 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php递归删除目录与文件的方法
Jan 30 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 #PHP
PHP面向对象类型约束用法分析
Jun 12 #PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
Jun 12 #PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 #PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 #PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 #PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 #PHP
You might like
php escape URL编码
2008/12/10 PHP
php反弹shell实现代码
2009/04/22 PHP
php ci框架验证码实例分析
2013/06/26 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
javascript特殊用法示例介绍
2013/11/29 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
python实现基本进制转换的方法
2015/07/11 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
PHP开发的一般流程
2013/08/13 面试题
描述内存分配方式以及它们的区别
2016/10/15 面试题
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
小学运动会表扬稿
2014/01/19 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
《社戏》教学反思
2014/04/15 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
现实表现证明材料
2015/06/19 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
Python3 类型标注支持操作
2021/06/02 Python
java代码实现空间切割
2022/01/18 Java/Android
分享Python获取本机IP地址的几种方法
2022/03/17 Python