前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP系列 | PHP中的stdClass是什么?

PHP系列 | PHP中的stdClass是什么?

作者头像
Tinywan
发布2024-01-23 21:11:39
1480
发布2024-01-23 21:11:39
举报
文章被收录于专栏:开源技术小栈

简介

stdClass 是 PHP 中的空类,用于将其他类型转换为对象。它类似于 Java 或 Python 对象。 stdClass 不是对象的基类

转换为对象

如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 null,则新的实例为空。 array 转换成 object 将使键名成为属性名并具有相对应的值。注意:在这个例子里, 使用 PHP 7.2.0 之前的版本,数字键只能通过迭代访问。

stdClass() 的定义

  1. stdClass 是PHP的一个基类,几乎所有的类都继承这个类,任何时候都可以被new,可以让一个变量成为一个对象(object)。
  2. 所有使用 new stdClass 的变量,都不能使用方法,即不可能出现 $a->text() 的情况
  3. stdClass 在 php5 版本开始流行起来的,低于php5的版本,尽量或不使用此方法(好像这一条是多余的)

stdClass() 的用途

  1. stdClass通过调用它们直接访问成员。
  2. 它在动态对象中很有用。
  3. 它用于设置动态属性等。

stdClass 类的使用

1、存储数据

(1)数组存储

代码语言:javascript
复制
// 定义数组存储个人信息
$personal_array = [
    "name" => "Tinywan",
    "home" => "www.tinywan.com",
    "address" => "ZheJiang HangZhou"
];

// 显示数组内容
print_r($personal_array);

输出内容

代码语言:javascript
复制
Array
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

(2)stdClass存储:使用 stdClass 而不是数组来存储个人详细信息(动态属性)

代码语言:javascript
复制
$personal_object = new stdClass();
$personal_object->name = "Tinywan";
$personal_object->home = "www.tinywan.com";
$personal_object->address = "ZheJiang HangZhou";

// 显示对象内容
print_r($personal_object);

输出内容

代码语言:javascript
复制
stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

注意:数组到对象和对象到数组的类型转换是可能的。

(3)将数组转换为对象

代码语言:javascript
复制
$personal_array = [
    "name" => "Tinywan",
    "home" => "www.tinywan.com",
    "address" => "ZheJiang HangZhou"
];
$personal_object = (object) $personal_array;

// 显示对象内容
print_r($personal_object);

输出内容

代码语言:javascript
复制
stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

(4)将对象属性转换为数组

代码语言:javascript
复制
$personal_object = new stdClass();
$personal_object->name = "Tinywan";
$personal_object->home = "www.tinywan.com";
$personal_object->address = "ZheJiang HangZhou";

$personal_array = (array) $personal_object;
// 显示数组内容
print_r($personal_array);

输出内容

代码语言:javascript
复制
Array
(
    [name] => Tinywan
    [home] => www.tinywan.com
    [address] => ZheJiang HangZhou
)

2、动态增加属性

代码语言:javascript
复制
$personal_object = new stdClass();
$personal_object->name = "Tinywan";
$personal_object->home = "www.tinywan.com";
$personal_object->address = "ZheJiang HangZhou";
print_r($personal_object);

// 动态增加属性
$personal_object->age = 24;
$personal_object->schoole = "GanZhengFa";
print_r($personal_object);

输出

代码语言:javascript
复制
stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com
    [address] => ZheJiang HangZhou
)
stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com
    [address] => ZheJiang HangZhou
    [age] => 24
    [schoole] => GanZhengFa
)

stdClass 并不是 PHP 中对象的基类

这里需要注意的是,尽管是泛型类,stdClass 并不是 PHP 中对象的基类,我们可以使用 instanceof 关键字来证明这一点。

代码语言:javascript
复制
class Tinywan{

}

$objClass = new Tinywan();
if ($objClass instanceof \stdClass){
    echo 'Yes';
} else {
    echo 'No';
}

输出结果:No

这阐明了 stdClass 不是 PHP 中对象的基类

3. json_encode() 和 json_decode()

json_encode()json_decode() 是专门用于对 JSON 字符串执行操作的函数。json_encode() 用于将 Array 转换为 JSON 字符串 。因此,首先,我们将一个对象转换为 JSON 字符串,然后使用 json_decode() 将其转换为对象。

代码语言:javascript
复制
$empInfo = array(
'name'=>'John',
'address'=>'Houston',
'employment' => array(
    'id' => '1',
    'address' => 'Los Angeles'
    )
);
print_r(json_decode(json_encode($empInfo)));

输出结果

代码语言:javascript
复制
stdClass Object
(
   [name] => John
   [address] => Houston
   [employment] => stdClass Object
      (
         [id] => 1
         [address] => Los Angeles
      )
)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 转换为对象
      • stdClass() 的定义
        • stdClass() 的用途
        • stdClass 类的使用
          • 1、存储数据
            • 2、动态增加属性
              • 3. json_encode() 和 json_decode()
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档