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 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
symfony表单与页面实现技巧
Jan 26 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 PHP
swoole锁的机制代码实例讲解
Mar 04 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批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
nodejs基础应用
2017/02/03 NodeJs
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
2014年秘书工作总结
2014/11/25 职场文书
党员年度个人总结
2015/02/14 职场文书
羊脂球读书笔记
2015/06/30 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
利用Python实时获取steam特惠游戏数据
2022/06/25 Python
java中如何截取字符串最后一位
2022/07/07 Java/Android