什么是 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` 确实有用,什么时候应该避免使用它?