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如何抛出异常处理错误
Mar 02 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
10 个经典PHP函数
Oct 17 PHP
递归实现php数组转xml的代码分享
May 14 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
php简单实现sql防注入的方法
Apr 22 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
php-app开发接口加密详解
Apr 18 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 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与已存在的Java应用程序集成
2006/10/09 PHP
php横向重复区域显示二法
2008/09/25 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jquery使用经验小结
2015/05/20 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python list多级排序知识点总结
2019/10/23 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
python 实现的车牌识别项目
2021/01/25 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
超市商业计划书
2014/05/04 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android