我目前正在将我的网站从 PHP5 迁移到 PHP7,并且我已经开始使用添加的严格输入功能。然而,这要求我以下行开始所有文件:
<?php declare(strict_types=1);
// All other code here
// ...
所以我想知道,有没有办法使用
strict_types
或 apache 配置文件全局启用 php.ini
,这样我就不必每次都写这一行,如果是的话我该如何启用它?
这是故意不可能的,因为在对标量类型提示进行非常长的讨论之后采用的实现是这样的:https://wiki.php.net/rfc/scalar_type_hints_v5
它引入了两种标量类型参数模式,这两种模式都保证函数“接收”参数获得其签名中所需的类型。但是,它提供了两种模式来说明calling代码如何实现这一点:
在模式 0 下,它会自动验证并转换某些标量类型(例如int
'123'
转换为 123
,但 'hello'
会出错)在模式 1 中,它要求调用者预先进行验证和转换,并拒绝任何类型不正确的参数(例如,对于 '123'
'hello'
和 int
都被拒绝)
,因为:
该设置需要影响内置函数以及用户定义的函数无论设置如何,您的函数都保证接收请求的参数类型
declare
语句。
因为如果您只需要使用严格模式的库,您将导致不必要的包分离。 还要考虑严格/弱类型选项只是 PHP 中的额外选项。