可以在PHP7中禁用类型检查吗?

可以在PHP7中禁用类型检查吗?,php,Php,似乎strict\u types指令在禁用时仍会抛出TypeError: 是否可以禁用任何类型的运行时检查 原因:我们有一个非常大的代码库,我们正在迁移到PHP7.1。我们希望能够从现有注释中填充许多返回类型,以便开发能够更快地捕获bug。然而,如果我们这样做,它将破坏生产中的许多事情(因为代码流将发生变化)。官方回答,不,这不会发生。不幸的是,您可能需要费力地完成它,编写单元测试,或者甚至编写一些自定义代码来帮助进行转换。有了40多万条生产线,这将不是一件容易的事。为什么要让生产保持现状呢?

似乎
strict\u types
指令在禁用时仍会抛出
TypeError

是否可以禁用任何类型的运行时检查


原因:我们有一个非常大的代码库,我们正在迁移到PHP7.1。我们希望能够从现有注释中填充许多返回类型,以便开发能够更快地捕获bug。然而,如果我们这样做,它将破坏生产中的许多事情(因为代码流将发生变化)。

官方回答,不,这不会发生。不幸的是,您可能需要费力地完成它,编写单元测试,或者甚至编写一些自定义代码来帮助进行转换。有了40多万条生产线,这将不是一件容易的事。

为什么要让生产保持现状呢?而新版本(我希望您正在测试)将在PHP7上运行?这是一个非常大的代码库(400k+行),一个完整的回归测试将是不可行的。我们希望能够在一段时间内开始发现dev上的错误,直到我们能够在生产环境中轻松地打开它。简言之,没有。让我猜猜,您是从<5.4迁移过来的?我认为您必须开始编写单元测试并逐段进行。如果您将字符串传递给需要int的对象,无论严格类型如何,都会出现错误。。请参见5.6
可捕获致命错误:传递给inc()的参数1必须是int的实例,给定的字符串
`所有启用严格类型都是禁用的。如果您在代码库的一部分中提供了类型提示(标量或其他),那么您需要在其他部分中遵守它们。所以正如@Difster所说:简言之,不。这就是技术债务的样子,OP的选择是要么把问题踢得更远,直到它变得更糟,可能不可避免,或者需要在一个时间范围内解决一些问题,使其不可能解决,要么咬紧牙关,开始解决它。是的。确切地我怀疑已经有很多人在踢易拉罐了,而这次行动正处于子弹阶段。