PHP中变量的美元符号

123 阅读2分钟

我是以Java作为我的专业语言开始的,在我发现Ruby之前,PHP是我新项目的主要编程语言选择。这大概是六到七年前的事了,甚至更久。我在CodeIgniter[0]和各种库(如HHMVC[1])中度过了一段相当美好的时光。

无论如何,我想说的是--即使在那时,它的语法中最引人注目的特征是变量前的美元符号,这让我觉得这种语言的美学是不合格的,至少是令人讨厌的。显然,这并没有阻止我用PHP编写大量的应用程序,因为这更像是一个小麻烦,如果你愿意的话,这主要是为了学术目的而值得商榷的事情。

最近我突然想到一个问题:"美元符号的历史是什么? 为什么会有。"--所以像每个好问题一样,我开始用Google来寻找一些答案。

第一个影响--Perl。

因为PHP是基于Perl的,Perl使用,尽管Perl使用的符号是有意义的,而且有很多用来表示数据类型,(比如@用来表示数组)PHP只是有,尽管Perl使用的符号是有意义的,而且有很多用来表示数据类型,(比如@用来表示数组)PHP只是有

Perl可能是从awk等shell工具中获得的,因此:

用一个符号来表示变量使字符串插值变得简单而清晰。Shell、Perl和PHP都是出于对快速和简单的字符串操作的需要而发展起来的。

然后Quora提供了一个非常好的轶事,将上述结果整理得更加完善。

PHP最初是作为Rasmus为管理他的网站而编写的一组Perl脚本实现的--"PHP "代表 "个人主页"。PHP中的其他一些语法元素也让人想起了Perl。

Perl可能是从awk和sh那里学来的,而后者可能是从比Unix早5-10年的BASIC那里学来的。

琐事:$(或@或%,在Perl 5中)被称为 "标志"。

由此我们发现,在计算机编程中,$、@和%实际上被称为圣痕[3]。下一站是看看这些符号在Perl中表示什么。

标量值总是用'来命名,即使是指属于数组或哈希的标量。'来命名,即使是指属于数组或哈希的标量。"符号在语义上的作用与英语单词 "the "类似,它表示期望有一个单一的值:

  $days               # the simple scalar value "days"
  $days[28]           # the 29th element of array @days
  $days{'Feb'}        # the 'Feb' value from hash %days
  $#days              # the last index of array @days

整个数组(以及数组和哈希的片断)用'@'表示,其作用与英语中的 "these "或 "those "很相似,因为它表示期望有多个值:

  @days               # ($days[0], $days[1],... $days[n])
  @days[3,4,5]        # same as ($days[3],$days[4],$days[5])
  @days{'a','c'}      # same as ($days{'a'},$days{'c'})

整个哈希值用'%'来表示:

  %days               # (key1, val1, key2, val2 ...)

非常有趣,它们让我想起了Ruby的速记法或一般的分隔输入法:

%w(foo bar)

结论?PHP中变量的美元符号实际上是一个残存的符号,因为与Perl相比,数组和哈希没有任何符号。