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 7try...catchいます。isset()unset()

少なくとも、私はそれがとても奇妙で好きです!

4

1 に答える 1

2

isset関数unsetはなく、言語構成体です。つまり、それらは関数よりもandのような演算子に近いため、同じルールでは再生されません。は 1 つしかなく、必要に応じて関数として再定義することはできません。+=unset

さらに、エラーは例外ではありません。catchnではないのでエラーにはなりませんthrow。コードが実行される前に発生する構文/パーサーエラーの場合はなおさらです。

于 2013-03-14T20:07:34.157 に答える