stdClass 类

(PHP 4, PHP 5, PHP 7, PHP 8)

介绍

一个具有动态属性的通用空类。

此类的对象可以使用 new 运算符实例化,也可以通过 类型转换为对象 创建。 几个 PHP 函数也会创建此类的实例,例如 json_decode()mysqli_fetch_object()PDOStatement::fetchObject()

尽管没有实现 __get()/__set() 魔术方法,但此类允许动态属性,并且不需要 #[\AllowDynamicProperties] 属性。

这不是一个基类,因为 PHP 没有通用基类的概念。 然而,可以创建一个从 stdClass 扩展的自定义类,并因此继承动态属性的功能。

类概述

class stdClass {
}

此类没有方法或默认属性。

示例

示例 #1 通过类型转换为对象创建

<?php
$obj
= (object) array('foo' => 'bar');
var_dump($obj);

上面的示例将输出

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

示例 #2 通过 json_decode() 创建

<?php
$json
= '{"foo":"bar"}';
var_dump(json_decode($json));

上面的示例将输出

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

示例 #3 声明动态属性

<?php
$obj
= new stdClass();
$obj->foo = 42;
$obj->{1} = 42;
var_dump($obj);

上面的示例将输出

object(stdClass)#1 (2) {
  ["foo"]=>
  int(42)
  ["1"]=>
  int(42)
}
添加注释

用户贡献的注释 1 个注释

9
Mats M
1 年前
在 PHP8 中,这已更改

https://php.net/manual/en/migration80.incompatible.php

一些警告已转换为错误异常

尝试写入非对象的属性。 以前,这会为 null、false 和空字符串隐式创建 stdClass 对象。

因此,如果您向 $var 添加属性,则首先需要将其设为 stdClass()

$var = new stdClass();
$var->propp1 = "nice";
$var->propp2 = 1234;
To Top