1

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

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,...

如何将 null 传递给函数并避免此错误?

4

4 回答 4

7

?在类型提示中 添加一个。

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

这种方式只允许显式 NULL 或 DateTime。

于 2018-08-08T12:57:08.067 回答
6

从此改变:

function foo(DateTime $aDate){

对此:

function foo($aDate){

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

function foo(DateTime $aDate = null){

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

于 2013-07-31T14:55:07.443 回答
3

使 $aDate 可选。

function foo(DateTime $aDate = null) {
    if($aDate) {
        //parse date
    } else {
        //null given
    }
}
于 2013-07-31T14:57:53.817 回答
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');
   }
}
于 2013-07-31T14:58:04.093 回答