我在php中有一个函数,我想接受一个DateTime对象或null。 E.g。
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传递给函数并避免此错误?
答案 0 :(得分:6)
从此改变:
function foo(DateTime $aDate){
对此:
function foo($aDate){
但是如果你仍然想确保传递的对象是DateTime
对象,你可以这样做:
function foo(DateTime $aDate = null){
有关类型提示的更多示例,请参阅here。
答案 1 :(得分:3)
让$ aDate可选。
function foo(DateTime $aDate = null) {
if($aDate) {
//parse date
} else {
//null given
}
}
答案 2 :(得分: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');
}
}
答案 3 :(得分:0)
在类型提示中添加?
。
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。