DateTime作为可选参数(默认为"now",不为null)?

gre*_*emo 6 php parameters datetime

可以DateTime使用now默认设置对象作为可选参数吗?

以下代码给出了语法错误:

public function getData(array $metrics, DateTime $start,
    DateTime $end = new DateTime, $params = array())
{
    // Default DateTime constructor automatically use "now"
}
Run Code Online (Sandbox Code Playgroud)

这只是一个好奇的问题,我知道我能做到:

public function getData(array $metrics, DateTime $start,
    DateTime $end = null, $params = array())
{
    $end = is_null($end) ? new DateTime() : null;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*per 6

不,您不能将对象设置为默认函数/方法参数.从文档:

默认参数值
函数可以为标量参数定义C++样式的默认值...

对象不是标量数据类型.