2013-07-31 2 views
1

У меня есть функция в php, которую я хочу принять либо объект DateTime, либо null. Например.Передача 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 он переворачивается, когда я прохожу нуль к нему и выдает ошибку:

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 для получения дополнительных примеров типа Hinting.

+1

Интересно, что он не позволяет 'null' с типом намекая. Часть меня чувствует, что это нужно. –

+0

ОК, так какой смысл ставить 'DateTime' в список параметров, если вы все еще можете передавать DateTime без него? – harryg

+0

@JasonMcCreary Ahh нашел решение! – 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'); 
    } 
} 
Смежные вопросы