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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
php通过各种函数判断0和空
Jul 04 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
php微信开发之图片回复功能
Jun 14 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
smarty内置函数section的用法
2015/01/22 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
python下MySQLdb用法实例分析
2015/06/08 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
python列表返回重复数据的下标
2020/02/10 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
python自动化办公操作PPT的实现
2021/02/05 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
初中政治教学反思
2014/01/17 职场文书
迎国庆横幅标语
2014/10/08 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python