2013-07-31 66 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'); 
    } 
}