1

从我无法理解的命名空间调用一些 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()

我喜欢它很奇怪,至少!

4

1 回答 1

2

isset并且unset不是函数,它们是语言结构。这意味着它们更接近于运算符 like+和而=不是函数,因此不遵循相同的规则。只有一个unset,如果您愿意,您无法将其重新定义为函数。

此外,错误也不例外。你不能catch出错,因为它不是thrown。对于语法/解析器错误更是如此,它们甚至发生在任何代码执行之前。

于 2013-03-14T20:07:34.157 回答