PHP stdClass类

2024-01-09 54

PHP中的stdClass类是PHP具有动态属性的通用空类,它是PHP中的标准类,此类的对象可以使用 new 运算符实例化,也可以通过类型转换为对象创建。stdClass类没有任何成员变量或方法,它的主要作用是作为一个通用的匿名对象,用于临时存储和传递数据。

一、实例

几个 PHP 函数也会创建此类的实例,比如 json_decode()、mysqli_fetch_object() 或 PDOStatement::fetchObject()。

1、json_decode()函数可以将JSON字符串解码为PHP对象或数组。如果传递给该函数的参数是一个有效的JSON字符串,则它将返回一个stdClass对象的实例。例如:

$json = '{"name":"John","age":30,"city":"New York"}';
$obj = json_decode($json);
echo $obj->name; // 输出 "John"

2、mysqli_fetch_object()函数可以从结果集中获取一行作为stdClass对象的实例。例如:

$result = mysqli_query($conn, "SELECT * FROM users");
$row = mysqli_fetch_object($result);
echo $row->username; // 输出 "johndoe"

3、PDOStatement::fetchObject()方法可以从结果集中获取一行作为stdClass对象的实例。例如:

$stmt = $pdo->query("SELECT * FROM users");
$row = $stmt->fetchObject();
echo $row->username; // 输出 "johndoe"

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

二、类摘要

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)
}
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
PHP stdClass类
上一篇: PHP Closure类
PHP stdClass类
下一篇: PHP WeakReference类