我在Mac上使用NetBeans,我在Linux的共享主机上运行CakePHP(尽管我不认为框架与它有任何关系)。这不是一个大问题,但它令人沮丧。
我想知道为什么我不能简单地这样做:
if($this->Session->read('User.value1') || $this->Session->read('User.value2')){
...
}
我得到的错误信息是:
Error: syntax error, unexpected '$this' (T_VARIABLE)
为什么有语法错误?我看不见。
我可以这样做,没有问题:
if($this->Session->read('value1')){
...
}
我也可以这样做,没有问题(||
周围没有空白):
if($this->Session->read('User.value1')||$this->Session->read('User.value2')){
...
}
但是如果我在||
操作符周围加上空格,它就停止工作了。或者更确切地说—这是最令人困惑的部分—有时当我在||
运算符周围加上空格时,它会停止工作,有时它不会。
我认为这可能是Netbeans 7.4中的一个错误,但是当我忽略Netbeans的警告并试图运行代码时,PHP给了我同样的错误。
这是怎么回事?
我正在用NetBeans for MAC
什么时候空格不是空格?
当它是一个不间断的空格!
目的是:
" || "
207C7C20 (hex)
但实际上在源文件中几乎可以肯定的是:
" || "
207C7CA0 (hex)
(在堆栈溢出时它不会是,但我打赌它在源文件中)。
对于mac来说,问题是(使用我自己的键盘布局,但我假设它在你的情况下类似):
"|" = alt + 1
" " = alt + space (accidental)
输入,加上"| |"非常很容易在按下空格键时按住Alt键,并且:你会得到意想不到的"wat"语法错误,从表面上看是没有意义的,直到你意识到问题是什么。
的例子:
-> cat foo.php
<?php
$foo = "x";
if (true || $foo) {
}
-> php -l foo.php
Parse error: syntax error, unexpected '$foo' (T_VARIABLE) in foo.php on line 4
Errors parsing foo.php