【问题标题】:Why does PHP have a $ sign in front of variables? [closed]为什么 PHP 在变量前面有一个 $ 符号? [关闭]
【发布时间】:2012-10-20 02:27:06
【问题描述】:

在 PHP 和其他一些脚本语言中使用 $var 语法,而在 Java 和其他语言中我们只能使用 var

这背后有什么理论吗?它是否有助于他们解析。如果不是,他们为什么要选择在前面多加一个角色?

【问题讨论】:

标签: php programming-languages syntax


【解决方案1】:

它可以防止变量名与语言关键字冲突,并允许将它们插入到字符串中。

【讨论】:

  • 这是一个很好的简洁答案,实际上并没有多大帮助......一些例子或细节会有所帮助
  • 然而......它与问题完美匹配
  • +这样更容易发现和使用变量。
  • 1) 在 PHP 这种有大约 5700 个关键字的语言中,命名空间冲突比在具有大约 30 个关键字的 C 语言中更为常见。 2) echo "Hi, $first '$nick' $last, this is your $num$numext visit." vs "Hi, ".$first". '".$nick."' ".$last.", this is your ".$num.$numext." visit."; - 你更喜欢哪个?
  • 知道什么是关键字和什么是变量不应该用任意符号来解决。由于有许多其他语言已经设法实现这一点,恕我直言,“防止冲突”并不是真正的原因。
【解决方案2】:

我的理论是,即使引入了新的保留字,如 php 之类的脚本语言也需要某种方式才能继续运行,例如 php4 -> php5 got catch added。由于它是一种脚本语言,因此任何被捕获为变量名的网页都不会因为语言的变化而消失。

这不是编译语言的问题,因为所有内容都会转换为二进制文件,并且语言的任何更改都不会影响已编译的程序

【讨论】:

  • Python 等解释型语言无需任何变量前缀即可。向后兼容的重大更改将保留到该语言的下一个主要版本。
  • Perl 有符号 并且 被编译。当然是字节码,但C# 也是如此。你真的应该把 compiled 改为 static,因为它更准确。
【解决方案3】:

因为 constants保留字 没有 $ 东西

不要试图比较编程语言的语法……它们如此不同是对的。 :)

【讨论】:

    【解决方案4】:

    因为它的根源在于 Perl:PHP History

    【讨论】:

    • 致反对者:您想简短说明原因吗?
    • Perl 的根源在于 shell 脚本。
    【解决方案5】:

    因为某些语言是丑陋的临时脚本组合,并使用愚蠢的技巧来提醒“解析器”它有工作要做。

    而其他语言是真正的语言设计工作,使用真正的变量名而不是丑陋的宏语法......

    使用$ 的一种相当不错的语言是 Perl,但我可能会指出 Perl6 放弃了它。

    【讨论】:

    • 这些愚蠢的技巧在 1970 年代可能是有道理的,当时让编译器上的代码易于阅读比人类易于阅读更重要。
    • 不幸的是 Perl6 没有删除符号 [1] ($, @, %)。 [1]en.wikipedia.org/wiki/Perl_6#Sigil_invariance
    • 幸运的是 Perl 6 没有删除 sigils,否则它将不再是 Perl。
    • $array[0] 曾经从数组 ($) 中获取标量,但现在 @array[0] 从数组中获取标量我> (@)。为什么他们必须改变一些关于优秀的 ol' Perl 有意义的事情之一?
    • @Jon Purdy - Perl6 仍然有意义,只是它的意义与 Perl5 不同
    【解决方案6】:

    这是proposed explanation as to why PHP uses $。它显示了原始脚本的序列,例如使用 $ 通过 Perl 到 PHP 的 awk。

    可能最初用于简化语言的解析。

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 2011-03-20
      • 2015-02-12
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多