2013-07-31 42 views
1

我在php中有一个函数,我想接受DateTime对象或null。例如。将空DateTime传递给php函数

function foo(DateTime $aDate){ 
    if ($aDate == null){ 
     echo "You passed a null variable"; 
    } else { 
     echo "You passed the date " . $aDate->format('Y-m-d'); 
    } 
} 

麻烦的是,因为该功能需要一个DateTime对象它翻转时,我传递null,并给出了一个错误:

Catchable fatal error: Argument 1 passed to foo() must be an instance of DateTime, null given,... 

如何传递空的功能和避免这个错误?从这个

回答

6

变化:

function foo(DateTime $aDate){ 

要这样:

function foo($aDate){ 

但是,如果你仍然要确保传递的对象是一个DateTime对象,你可以这样做:

function foo(DateTime $aDate = null){ 

有关类型提示的更多示例,请参见here

+1

有趣的是它不允许'用类型提示null'。我的一部分感觉应该。 –

+0

好吧,那么如果你仍然可以传递一个DateTime而没有它,那么把'DateTime'放在函数的参数列表中又有什么意义呢? – harryg

+0

@JasonMcCreary啊找到了解决方案! – Neal

2

使$ aDate可选。

function foo(DateTime $aDate = null) { 
    if($aDate) { 
     //parse date 
    } else { 
     //null given 
    } 
} 
1

做到这一点的方法是在函数声明中指定一个默认值: -

function foo(DateTime $aDate = null){ 
    if (!$aDate){ 
     echo "You passed a null variable"; 
    } else { 
     echo "You passed the date " . $aDate->format('Y-m-d'); 
    } 
}