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中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
php数组的一些常见操作汇总
Jul 17 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP Web表单生成器案例分析
Jun 02 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
服务器端解压缩zip的脚本
2006/12/22 PHP
生成php程序的php代码
2008/04/07 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
curl和libcurl的区别简介
2015/07/01 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
《水上飞机》教学反思
2014/04/10 职场文书
工程负责人任命书
2014/06/06 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
技术入股合作协议书
2016/03/21 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技