Rya*_*die 0 php types type-hinting
失败(组成代码):
namespace Season\Summer;
class Summer
{
public static function days(string $month)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
带有:
"Argument 1 passed to Season\\Summer\\Summer::days() must be an instance of string, string given, called in /path/to/Seasons/Summer/Summer.php on line 5."
Run Code Online (Sandbox Code Playgroud)
似乎命名空间正在引起PHP的内置类型提示问题,因为我认为它正在检查参数$month是否为标量类型string类,Season\Summer\而不是全局定义string(我可能错了)。
我该如何解决?解决办法是什么?给我们is_*()里面的功能?
小智 5
PHP不支持string作为类型提示。如果您需要$ month作为字符串,请从method参数中删除该字符串,进行强制转换或使用is_string()以下命令检查它是否为字符串:
namespace Season\Summer;
class Summer
{
public static function days($month)
{
$month = (string) $month;
// or
if (! is_string($month)) {
throw new Exception("Argument $month is not a string.");
}
}
}
Run Code Online (Sandbox Code Playgroud)