从命名空间调用php函数

时间:2013-03-14 20:03:03

标签: php namespaces global-namespace

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

至少我非常奇怪!

1 个答案:

答案 0 :(得分:1)

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

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