我在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传递给函数并避免此错误?
在类型提示中添加一个?
。
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。
从此更改:
function foo(DateTime $aDate){
对此:
function foo($aDate){
但是,如果你仍然想确保传递的对象是DateTime
对象,你可以这样做:
function foo(DateTime $aDate = null){
有关类型提示的更多示例,请参见此处。
将$aDate设为可选。
function foo(DateTime $aDate = null) {
if($aDate) {
//parse date
} else {
//null given
}
}
实现这一点的方法是在函数声明中指定一个默认值:-
function foo(DateTime $aDate = null){
if (!$aDate){
echo "You passed a null variable";
} else {
echo "You passed the date " . $aDate->format('Y-m-d');
}
}