我正在检查 PHP 中可选参数的类型,如下所示:
/**
* Get players in the team using limit and
* offset.
*
*
* @param TeamInterface $participant
* @param int $limit
* @param int $offset
* @throws \InvalidArgumentException
* @return Players of a team
*/
public function getPlayers(TeamInterface $team, $limit = null, $offset = null)
{
if (func_num_args() === 2 && !is_int($limit) ){
throw new \InvalidArgumentException(sprintf('"Limit" should be of int type, "%s" given respectively.', gettype($limit)));
}
if (func_num_args() === 3 && (!is_int($limit) || !is_int($offset))){
throw new \InvalidArgumentException(sprintf('"Limit" and "Offset" should be of int type, "%s" and "%s" given respectively.', gettype($limit), gettype($offset)));
}
//.....
}
这可行,但有两个主要问题:
1/ 如果我需要检查相同类型的 4/5 可选参数的int
类型,代码会变得不必要的长。任何想法如何使这段代码更易于维护?(也许只使用一个if
语句来检查两者的相同类型$limit
和$offset
)
2/getPlayers($team, 2, null)
抛出异常。知道该函数实际上可以在这里处理一个null
值,这可以吗?