Avatar ·

什么是 PHP 中的 stdClass,它有什么用?

大家好,同事们!我是一名初学 PHP 的开发者,在阅读别人的代码时经常遇到一个奇怪的构造:`$obj = new stdClass();`。然后这个对象被当作普通对象使用,动态添加属性:`$obj->name = 'John';`。我知道这是一个内置类,但无法理解它的本质。 例如,我习惯通过自己的类创建对象: ```php class User { public $name; public $email; } $user = new User(); $user->name = 'John'; ``` 但为什么还需要 `stdClass`?文档说它是一个空类,但它到底有什么用?为什么不能直接用数组?数组 `['name' => 'John']` 也能做同样的事。 我还看到,通过 `json_decode($json)` 将 JSON 转换为对象时会出现 `stdClass`。如果不传递第二个参数 `true`,返回的就是 `stdClass` 类型的对象。这让我彻底困惑了。 请解释一下,在哪些情况下 `stdClass` 确实有用,什么时候应该避免使用它?