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 相关文章推荐
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
php MessagePack介绍
Oct 06 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
Smarty模板常见的简单应用分析
Nov 15 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
python 文件操作删除某行的实例
2017/09/04 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
用Django写天气预报查询网站
2018/10/21 Python
详解Python:面向对象编程
2019/04/10 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
基于Python实现天天酷跑功能
2021/01/06 Python
python中使用np.delete()的实例方法
2021/02/01 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
公司出纳岗位职责
2013/12/07 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书