在PHP 7中全局启用'strict_types'

时间:2016-05-09 08:55:14

标签: php apache php-7 variable-types

我目前正在将我的网站从PHP5迁移到PHP7,并且我已经开始使用添加的严格输入功能。但是,这需要我使用以下行开始所有文件:

strict_types

所以我想知道,有没有办法使用php.ini或apache配置文件全局启用{{1}}所以我不必每次都写这行,如果是这样的话我可以启用吗?

3 个答案:

答案 0 :(得分:38)

这是故意不可能的,因为在标量类型提示的极长讨论之后采​​用的实现是这样的:https://wiki.php.net/rfc/scalar_type_hints_v5

它明确地选择了如何向任何函数的调用者检查标量类型,而不是其作者,以便:

  • 如果你编写一个带有标量类型提示的库,那么你的函数就可以保证所请求的参数类型,即使是由非严格模式编写的代码调用(代之以强制类型)
  • 如果您编写一个库并想要传统的弱类型,您仍然可以使用使用类型提示的库(因为它们不会强迫您执行严格的类型检查)
  • 相反,如果您编写一个库并希望严格键入来表示您调用的函数,则不必要求您的库的用户也启用严格键入
  • 内置函数的工作方式与用户定义的函数相同,默认情况下现有代码的运行方式相同
  • 如果您打开严格打字,则需要更改代码才能正确处理

因此,由您来告诉PHP哪些文件已被编写为使用严格类型模式,哪些文件没有?而这样做的方法是使用declare语句。

答案 1 :(得分:3)

PHPStorm 可以进行检查以帮助您:

enter image description here

答案 2 :(得分:1)

基本上没有。

因为如果您只需要使用严格模式的库,则会导致不必要的包分离。 还要考虑严格/弱类型选项只是PHP中的一个额外选项。