我有一个处理日期的类方法:
public function setAvailability(DateTime $start, DateTime $end){
}
Run Code Online (Sandbox Code Playgroud)
由于项目可用性可以有下限,上限,两者或没有,我想使setAvailability()接受NULL值.但是,NULL
常量违反了类型提示:
$foo->setAvailability(NULL, $end);
Run Code Online (Sandbox Code Playgroud)
触发:
可捕获的致命错误:传递给Foo :: setAvailability()的参数1必须是DateTime的一个实例,给出null
而且,据我所知,我没有没有值的DateTime实例.(我可以吗?)
由于我无法掌握的原因,这似乎有效:
public function setAvailability(DateTime $start=NULL, DateTime $end=NULL){
}
...
$foo->setAvailability(NULL, $end);
Run Code Online (Sandbox Code Playgroud)
但它看起来像一个纯粹的机会工作的黑客.
你会如何处理PHP类中的未设置日期?
Joh*_*ess 20
关于typehinting的PHP手册中已经清楚地说明了这一点:
函数现在能够强制参数为对象(通过在函数原型中指定类的名称)或数组(从PHP 5.1开始).但是,如果将NULL用作默认参数值,则允许将其作为后续调用的参数.