我正在使用NetBeans for Mac,我在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给了我同样的错误。
这里发生了什么?
答案 0 :(得分:14)
我正在使用NetBeans for MAC
当它是non-breaking space时!
目的是:
" || "
207C7C20 (hex)
但源文件中的实际内容几乎可以肯定:
" || "
207C7CA0 (hex)
(在堆栈溢出时它不会但我敢打赌它在源文件中)。
使用mac问题是(使用我自己的键盘布局,但我假设它在你的情况下类似):
"|" = alt + 1
" " = alt + space (accidental)
所以打字,使用序列“||”,当按下空格键时,仍然可以轻松按下
示例:
-> 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