2012-01-14 45 views
6

可以使用now作为默认值,将DateTime对象设置为可选参数吗?DateTime作为可选参数(默认为“now”,非null)?

下面的代码给了我一个语法错误

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

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

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

回答

6

不,你不能设置一个对象作为默认的函数/方法参数。从documentation

默认参数值
函数可以定义C++ - 风格的默认值参数...

的对象不是一个scalar datatype