【问题标题】:PHP 7 reserved words: resource, object, mixed and numericPHP 7 保留字:资源、对象、混合和数字
【发布时间】:2016-08-12 10:03:01
【问题描述】:

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,似乎还有一个额外的关键问题要问。在我看来,应该保留或不保留一个词,并且 软保留 状态没有意义,因此:

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

【问题讨论】:

  • 只需调用它ResourceInterface 并为自己省去麻烦
  • @naththedeveloper 我不给我的接口名称添加 Interface 后缀,并且比其他任何人都更多地将 Class 后缀添加到他们的类名称。
  • 我建议它的唯一原因是它是PHP-FIG 标准。
  • @naththedeveloper 这是整个 psr imo 中最愚蠢的决定...Interface 后缀没有任何价值。
  • @PeeHaa 我们这里有一些社区,如果不让人们对我提出 PSR 标准的个人问题,甚至不能提出建议,就像我是他们某些决定的责任人一样。 .

标签: php reserved-words


【解决方案1】:

但如果 PHP 突然将其设为 PHP 7 中期发布流的保留字,我会感到厌恶。

好吧,根据您所拥有的知识,将其命名为例如资源并抓住机会。

鉴于已接受的 PR 与此处提交的经验证据之间存在明显冲突,并且源中没有任何此类保留,我是否应该安全地调用我的接口 Resource?

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

这个 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 时也发生了同样的情况。这样每个人都提前知道如何在它成为问题之前不要使用它。

【讨论】:

  • 我不是在寻找水晶球,而是在寻找了解相关内部讨论的人,他可以阐明“软保留”对于语言的未来实际上意味着什么,因为手册没有详细说明。
  • 您是说“以下单词列表已对它们进行了软保留。虽然它们仍可用作类、接口和特征名称(以及就像在命名空间中一样),强烈建议不要使用它们,因为它们可能会在 PHP 的未来版本中使用。”不清楚?
  • 这很清楚。我在 soft reserved words 标题下查看,但没有看到任何文本。对我来说,软预订讨论出现在 reserved words 标题下是一个奇怪的布局。它仍然与软保留字的路线图无关。如果我知道我可以在 PHP 8 之前使用该名称,我可能会接受这种风险,而如果它可能在 PHP 7.2 之前被破坏,我可能不会。
  • @QuolonelQuestions 尽管这里有 php 内部人员,但他绝对不能说什么时候很难保留。它可以是 7.1 到 8 甚至更高版本之间的任何版本。 7.1 和 8 之间将是几年时间,php 内部人员可能会在某一刻决定硬保留它们。与其试图回答不可能准确回答的问题,不如不要使用任何潜在的保留字。我不确定这有什么难的。我很确定resource不是最准确的名称。
  • 我很确定确实是,鉴于您甚至没有对我的领域进行过最简短的介绍,我看不出您怎么能肯定地断言任何不同。
【解决方案2】:

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

这与弃用计划在未来移除的功能的原因类似。

为什么他们选择硬保留一些词,而软保留其他词,可能是因为他们知道有很多网站使用后者,所以立即保留它们会增加许多网站的升级难度。

【讨论】:

    猜你喜欢
    • 2018-04-10
    • 2012-03-03
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多