例如,在PHP或其他松散类型语言中,我可以使用这样的代码:
{{1}}
因为我可以用PHP和类似的语言来做这件事,这是否意味着我应该这样做?
另一种选择可能是强迫自己编写类似于C ++的代码,我将重新设计代码或创建数据结构以保持其类型。但我应该这样做吗?
答案 0 :(得分:1)
PHP不是强类型的事实既是礼物又是诅咒。它非常适合您希望能够处理多种类型,但如果处理不当,也会导致一些错误的代码。就个人而言,我使用的是强大的打字和#39;尽可能在PHP中避免错误(它看起来更清晰,通常更容易阅读/理解)。即便如此,PHP可以并且通常会随时随地自动进行转换(见下文),这就是“诅咒”的地方。进来了。
function foo(string $string) : int{
//$string will be cast as string if possible, return value is cast as int if possible
return $string;
}
echo foo(1);
<强>输出:强>
1
不幸的是,强制类型(不使用 declare(strict_types=1);
)的唯一真正方法是进行类型检查;
function foo($string){
if(is_string($string) && is_numeric($string)){
return (int)$string;
}else{
return null;
}
}
var_dump(foo(1));
echo '<br>';
echo foo('1');
<强>输出:强>
NULL
1
或者,您可以告诉PHP使用严格类型;
declare(strict_types=1);
...但当然你会失去松散类型语言的一些好处。在一天结束时,它取决于你!