PHP 7保留字:资源,对象,混合和数字

时间:2016-08-12 10:03:01

标签: php reserved-words

PHP RFC: Reserve Even More Types in PHP 7声称现在在类,接口和特征名称和命名空间的上下文中保留以下单词:resource, object, mixed and numeric

但是,以下代码在PHP 7中为valid

class resource {}
class object {}
class mixed {}
class numeric {}

我想调用我的界面Resource,但如果PHP突然在PHP 7中期发布流程中成为保留字,我会感到厌恶。

  • 鉴于已接受的PR与本文提交的经验证据和absence of any such reservations in the source之间明显存在冲突,我是否可以安全地拨打我的界面Resource
  • 这个PR的补丁是否仍然可以在PHP 7.x中实现,还是必须等到PHP-next?
  • 是否缺乏任何承诺来实施它是否可能永远不会在未来的任何版本中实施?

编辑:鉴于后面的讨论突出显示这些单词只有soft reserved,似乎还有一个额外的关键问题要问。在我看来,一个词应该保留或不保留,并且软保留状态没有意义,因此:

  • 为什么创建软保留状态而不是“硬”保留这些词?

2 个答案:

答案 0 :(得分:3)

  

但如果PHP突然在PHP 7中期发布流程中成为保留字,我会厌恶。

凭借你所掌握的知识,将它命名是愚蠢的,例如资源并抓住机会。

  

鉴于公认的PR与本文提交的经验证据存在明显冲突,并且在来源中没有任何此类保留,我是否可以安全地拨打我的界面资源?

没有。除非你确定它再次出现在桌面上,否则它将是非常愚蠢的。

  

这个PR的补丁是否仍然可以在PHP 7.x中实现,还是必须等到PHP-next?

目前根据our manual软件保留:

Soft reserved words
resource (as of PHP 7)  object (as of PHP 7)    mixed (as of PHP 7) numeric (as of PHP 7)

是否真的难以保留应该无关紧要。

  

是否缺乏任何承诺来实施它是否可能永远不会在未来的任何版本中实施?

没人有水晶球没有。没有人能告诉你未来的任何版本会发生什么。

  

为什么创建软保留状态而不是“硬”保留这些词?

因为它可能是一个相当大的BC休息。弃用旧的mysql_* API时也会发生同样的情况。这样每个人都可以事先知道在问题出现之前不使用它。

答案 1 :(得分:1)

“软预订”的目的是为您提供时间来修复您的代码。这允许您现在升级到PHP 7,而不是让您首先找到这些关键字的所有用途并修复它们。但是你被警告你应该修复它们,因为未来的更新可能会破坏你的代码。

它类似于弃用计划在将来删除的功能的原因。

关于为什么他们选择在保留其他单词的同时硬保留一些单词,可能是因为他们知道有很多网站使用后者,所以立即保留它们会使许多网站的升级更加困难。