在PHP7中使用声明进行类型限制时出错

时间:2015-12-12 11:30:48

标签: php return-type declare

我目前正在使用小代码练习PHP7。我正在使用此代码来练习标量类型声明:

declare(strict_types=1);

function div(float $x, float $y)
{
    return $x / $y;
}

function sub(int $x, int $y)
{
    return $x - $y;
}

var_dump(div(2, 3.5)); // float(7)
var_dump(sub('2', 3)); // Fatal error: Uncaught TypeError: Argument 1 passed to sub() must be of the type integer, string given..

但是当我运行此代码时,我的服务器会出现500错误。但是当我删除declare()时它会起作用。我的服务器正在运行PHP7。

1 个答案:

答案 0 :(得分:0)

使用declare(strict_types = 1);你告诉php不要使用强制类型提示,所以你的字符串不会被转换为整数。 这就是你得到TypeError的原因。 如果你删除declare(strict_types = 1)php使用强制类型提示,那么你的字符串将被转换为一个整数,php不会抛出TypeError。