为什么PHP变量需要以美元符号开头?


13

我知道所有PHP变量都必须以美元符号开头(例如$someValue = 1),但是为什么会这样呢?为什么要做出这种设计选择?

我问的原因是我的女朋友问为什么当我提到PHP变量需要以美元符号开头时,我意识到我不知道为什么要选择这种语法。

有任何想法吗?


11
因为PHP的创建者不知道如何编写解析器。因此需要拐杖来识别标识符。
ThomasX 2011年

@ThomasX-哈哈,你可能是对的...我也不喜欢C代码库(喜欢)
Ben DeMott

我认为只有创建PHP的人才能回答这个问题。
kiamlaluno 2011年

1
我猜这是在鼓励开发人员……每当您输入$符号时,您就更接近付款了!
卡米尔·克里米克

如果我不必$this->在每个类变量和函数之前使用我会很高兴。
Chloe

Answers:


8

好吧,我也确实不是$$的忠实拥护者(我也不在乎变量的成本多少)。但是它来自perl。

解释性脚本语言(例如perl或php)使用$来快速识别和解析变量。这只是对解释器的优化。但是绝对不是针对程序员的优化!


对于程序员来说这不是一个优化吗?-我可以立即识别变量并将它们与其他构造区分开..
johannes

我相信Larry Wall曾经说过,变量前面的$使得在不破坏现有代码的情况下扩展Perl更加容易。他可以添加尚未用作变量的新关键字。应该是这篇文章,但它是在付费墙后面的:-(
SL Barth-恢复莫妮卡

@johannes我也可以立即在C中标识一个变量,即使没有$也是如此,因为我已经记住了所有关键字和函数后都带有括号。
JSideris

1
@Bizorke C可能具有较少的关键字(没有计算它们),但是,即使人们通常在UPERCASE中使用常量,PHP的常量也没有$。而且,一旦您真正了解了所有关键字等,就可以提高自己的水平,借助这种视觉辅助功能可能会更简单...但是然后:这是一个品味问题。我对答案的假设是“从Perl复制”和“更易于解析”。历史性决定
约翰内斯

@johannes我不是说$是从perl复制而来的,我说的是来自perl的。PHP基于Perl。是的,这是偏好。我不喜欢每次都输入$,而且在许多编辑器中,双击该单词时,不会选择$(减慢复制/粘贴)。是的,PHP的关键字比C的要多,但是我的论点仍然适用于C ++,java等。关键字通常容易记忆,并且在不同语言之间通常相对一致。另外,PHP并非仅适合初学者。我每天都使用PHP(和许多其他语言)进行编程,我可以告诉你$除了使我减速之外什么也没做。
JSideris

5

PHP最初是一种经过语法分析的元语法,并被简单地动态调用为已编译的c程序函数。
这样,您可以认为它类似于“ web”的“ shell”程序...
难怪$ dollarsigns变量的使用类似于shell变量。

当我12岁的时候,我正在学习PHP 3 ...作为我的第一门编程语言-使用$使生活变得更加轻松。我知道什么是变量,但是在阅读的所有源代码中都有一个提醒,使学习成为可能...如果我不开始使用PHP,不确定今天是否会在这里。

这是来自-> http://www.php.net/manual/zh/history.php.php的示例

<!-include /text/header.html->

<!-getenv HTTP_USER_AGENT->
<!-ifsubstr $ exec_result Mozilla->
  嘿,您正在使用Netscape!<p>
<!-endif->

<!-sql数据库从表中选择* user ='$ username'->
<!-除非$ numentries 1->
  抱歉,该记录不存在<p>
<!-endif出口->
  欢迎<!-$ user->!<p>
  您的帐户中还有<!-$ index:0->个信用点。<p>

<!-include /text/footer.html->

2
尽管我毫不怀疑美元符号对您有所帮助,但我想知道,也许与PHP整体上的简化有更多关系。我从十几岁开始就使用基本的Javascript,发现变量很容易学习,可能是因为当时的Javascript示例非常简单。
马特·布朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.