我遇到了多种方法来完成一个setter,我还没有在大项目中使用它们......
我想知道这两个二人之间有什么区别,哪一个是最好的?
public function setId($id){
if(is_int($id) && $id > 0){
$this->_id = $id;
return true;
}
return false;
}
要么
public function setId($id){
$id = (int) $id;
if($id > 0){
$this->_id = $id;
return true;
}
trigger_error("The id of your object could not be set/assigned !);
}
trigger_error()函数的用途是什么?当代码无处不在时,哪些setter是有益的
注意:我正在使用hydrate()函数用数据库中的数据填充我的对象!
如果你使用的是PHP 7,你可以使用恕我直言的更好的版本
public function setId( int $id ){
if($id > 0){
$this->_id = $id;
return true;
}
return false;
}
这意味着如果值不是int,则PHP本身会抛出错误
关于检查值是否大于0的条件仍然需要,只要这个条件通过,那么函数将返回true
,我假设小于0的值是无效值,这将返回false
。
在第二个示例中,trigger_error()
用于记录或引发错误,该错误指示方法已传递无效值,因此需要处理此处。
使用上面的代码版本,您还可以键入提示返回值...
public function setId( int $id ): boolean {
if($id > 0){
$this->_id = $id;
return true;
}
return false;
}
如果您需要坚持原始选项,那么在我看来,第一个选项更好,第二个选项执行转换为int然后检查结果是否为int,因此这没有用。