我从命名空间调用一些我无法理解的php函数时发现错误:
<?php
namespace test;
$var = "foo/bar";
echo 'let\'s call \strpos($var, \'o\'):', \strpos($var, 'o');
try{
echo '<br />let\'s call \unset($var):';
\unset($var); //error!
unset($var); //correct!
echo '<br />let\'s call \isset($var):';
\isset($var); //error!
isset($var); //correct!
}catch(\Exception $e){
echo 'We have error:', $e->getMessage();
}
?>
Php说: Parse error: syntax error, unexpected T_UNSET, expecting T_STRING in global_namespace.php on line 7
甚至try...catch
都不起作用,并且仅针对全局函数isset()
和unset()
报告错误!
至少我非常奇怪!
答案 0 :(得分:1)
isset
和unset
不是函数,它们是语言结构。这意味着它们比+
和=
等运算符更接近于函数,因此不会遵循相同的规则。只有一个unset
,如果您愿意,则无法将其重新定义为函数。
此外,错误不是例外。您不能catch
出错,因为它不是throw
n。对于甚至在执行任何代码之前发生的语法/解析器错误更是如此。