PHP 中的冒号有多种用途,但是,我已经偏离了这个用途,因为我不知道它适合哪个桶。
代码:
<?php
class ABC {
static function xyz() {
echo "I don't like the alphabet";
}
}
ABC:xyz();
// tucked away in a strange file
function xyz() {
echo "xyz\n";
}
现在显然代码缺少额外的
:
,但奇怪的是它的工作原理就好像没有任何问题一样。
你认为输出会是什么? Parse Error
?对字母表的不友善评论? Undefined Constant
? Partial Paamayim Nekudotayim
?(好吧!不是真的;给经验丰富的 PHP 专家开个玩笑)
但是实际输出是...
xyz
!亲自看看:https://onlinephp.io/c/e88355
有人知道为什么会发生这种情况吗?我能找到的唯一线索是它在 5.2 版本上崩溃了。
现在显然我可以添加
:
并完成它,但我真的很想理解为什么会发生这种情况,因为它提出了一个非常奇怪的错误。那么也许有一个解决方案可以防止此类愚蠢的事情再次发生。
冒号还用于可以作为
goto
的目标的语句标签。
ABC:xyz();
echo 'foo';
goto ABC;