如果我创建了var minLevelRaw = System.Configuration.ConfigurationManager.AppSettings["minLevel"];
var minLevel = LogLevel.FromString(minLevelRaw);
LogManager.GlobalThreshold = minLevel;
类的实例,那么DateTime
:
vardump()
输出:
<?php
$date = new DateTime;
var_dump($date);
在这种情况下,var_dump未明确报告object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-12-22 00:21:21.022426"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
或date
的值是公开的,但我对timezone
的体验是除非另有报告(即使用像var_dump
这样的标签,所有属性都被假定为公共属性
这意味着您应该能够运行像
[private:date]
并且输出应该包含字符串<?php
$date = new DateTime;
echo $date->timezone;
,但它不包含任何内容(或更具体地说是UTC
值)。
我知道这不是使用NULL
检索时区的正确方法,但让PHP报告对象具有您无法访问的公共属性似乎违反了对象的基本规则,即它们保留属性 - 如果是公共的 - 您可以访问它们。
为什么DateTime
会报告这些属性,但当我尝试访问这些属性时,它们会评估为var_dump
?