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编程与应用
Oct 09 PHP
fgetcvs在linux的问题
Jan 15 PHP
检查php文件中是否含有bom的函数
May 31 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP的几个常用加密函数
2016/02/03 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Python中__name__的使用实例
2015/04/14 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python中os模块详解
2016/10/14 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python实现简易版计算器
2020/06/22 Python
单利模式及python实现方式详解
2018/03/20 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
介绍一下Java的安全机制
2012/06/28 面试题
美容院营销方案
2014/03/05 职场文书
植物生产学专业求职信
2014/08/08 职场文书
物理课外活动总结
2014/08/27 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书