var_dump() 是否显示 class 属性?

does var_dump() shows class properties?

如果我对某些 class 使用 var_dump,请说 DateTime:

<?php

$date = new DateTime();

var_dump($date);

我得到了

/var/www/php/test/index.php:5:
object(DateTime)[1]
  public 'date' => string '2021-02-16 23:23:10.768097' (length=26)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Berlin' (length=13)

我认为有 3 个 public 属性。所以我尝试访问它们:

<?php

$date = new DateTime();

var_dump($date);

//example of accessing public $date; of class DateTime;
echo $date->date;

但是我得到了Undefined property: DateTime::$date in /var/www/php/test/index.php on line 7

那我应该怎么解读var_dump(some class)

var_dump() 同时显示 public 和私有属性。

对于 PHP 高达 7.3 date 是 public 属性 的 DateTime。

来自 PHP 7.4 date 是私人 属性,并试图访问它 returns 一条 Undefined property 消息。

https://3v4l.org/MW498

请注意,DateTime 的 PHP 手册中未记录这些属性,因此您对它们所做的任何操作都可能会损坏,恕不另行通知。