PHP多函数返回类型字符串| int
我遇到了一个有点不寻常的场景,在这个场景中,我的函数返回多种类型的PHP多函数返回类型字符串| int,php,return-type,phpcodesniffer,php-code-coverage,Php,Return Type,Phpcodesniffer,Php Code Coverage,我遇到了一个有点不寻常的场景,在这个场景中,我的函数返回多种类型的string或integer。我正在尝试声明返回类型。有谁能建议我在这里申报的最佳做法吗 我知道null或其他类型我可以使用这样的东西 /** * Get the result status as a formatted string * @return string|null formatted status */ public function abStatus() : ?string { 但我的函数如下所示,返回字符
string或integer
。我正在尝试声明返回类型。有谁能建议我在这里申报的最佳做法吗
我知道null或其他类型我可以使用这样的东西
/**
* Get the result status as a formatted string
* @return string|null formatted status
*/
public function abStatus() : ?string {
但我的函数如下所示,返回字符串或整数
/**
* Get the score for this action
* @return string|int
*/
public function getAlphaScore() {
if ($this->type != self::TYPE_ACTION) {
return 0;
}
if (empty($this->action->status < self::STATUS_IMPORTED) {
return 'U';
}
return ActionCalculator::actionScore($this->action->score);//returns integer here
}
或
此外,我还想了解在这种情况下的想法/建议/最佳实践,在这种情况下,将返回多种返回类型
/**
* @param $compareAction
* @return float|int|null
*/
那么,您不需要声明返回类型 它要么是
string
要么是int
,不能两者都有
这就是PHP弱类型的原因所在。“最佳”实践会说,最好使用一致的返回类型。没有严格返回类型时,无法定义严格返回类型。所以你处于这种情况是故意的
最好看看为什么你有这些不同的回报类型。那么你有一些选择
0
是否更相关if
返回null
而不是0
,则可以使用可为null的返回类型,如?string
getAlphaScoreAsInteger
getAlphaScoreAsString
。当然,这取决于你想做什么我建议最佳实践是只从方法或函数返回一种类型,而不是混合类型 假设分数是整数或整数(123或“123”)的字符串表示形式,然后决定希望它成为使用类型转换来强制执行它的类型 当你返回“U”时,我建议你使用弦。您可以使用ctype_digit添加一个检查,以确保您的字符串在返回之前只包含数字字符,如果不包含,则引发异常
或者,返回null而不是“U”,并使用?int注释。对返回值的严格检查将允许您将null转换为“U”。如果要处理大量数字,请将其保留为int
public function getAlphaScore() : int {
/**
* @param $compareAction
* @return float|int|null
*/