PHP 7 strict_types似乎全局开启?

时间:2017-09-15 14:05:32

标签: php php-7.1

根据标题,在我的WordPress 4.8,PHP 7.1项目中,如果我在我的方法中使用类型声明,它们是严格的,而不是强制性的。但我没有声明使用严格的类型。

WordPress会将它设置在任何地方吗?我显然搜索了strict_types这个词,却找不到任何东西。

可以全局启用吗?尽管我读过的所有内容都说无法完成?

更具体地说,我的方法签名是:

my_method(int $id, string $string) 

我称之为:

my_method(123, null)

1 个答案:

答案 0 :(得分:2)

假设您根据评论中的示例提出此问题,即使尚未启用strict typing,也无法将某些类型强制转换为其他类型。

例如,您的评论中的示例方法的无意义实现:

NSKeyedArchiver

function my_method( int $id, string $string ) { var_dump($id, $string); } 参数传递null会导致TypeError,即使像

这样的事情也是如此
$string

可以在没有警告的情况下被强制指示类型。

由于您使用的是PHP 7.1,因此可以使用新的nullable type declaration来允许空值。

my_method(123, false);    // int 123, string ''
my_method(123, 456);      // int 123, string '456'