文字

全局空间

(PHP 5 >= 5.3.0)

如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。

Example #1 使用全局空间说明

<?php
namespace  A \ B \ C ;


function  fopen () { 
     

     
$f  = \ fopen (...);  // 调用全局的fopen函数
     
return  $f ;

?>

用户评论:

[#1] hileon at gmail dot com [2015-11-25 08:17:15]

This design of access globe name is bad, at least inconvenient.
In case that you have some legacy code, and try to copy and re-use it under some namespace. You have to add prefix "\" on any global function call.

[#2] nobody at example dot com [2015-05-15 07:59:58]

In namespaced context the Exception class needs to be prefixed with global prefix operator.

<?php

namespace hey\ho\lets\go;

class MyClass
{
    public function failToCatch()
    {
        try {
            $thing = somethingThrowingAnException();
        } catch (Exception $ex) {
              // Not catched
        }
    }

    public function succeedToCatch()
    {
        try {
            $thing = somethingThrowingAnException();
        } catch (\Exception $ex) {
              // This is now catched
        }
    }

}

[#3] xmarcos at gmail dot com [2012-05-21 19:08:50]

That's the expected behavior, you have to declare the namespace at the top of the file to "extend" it. 

If you include a global namespaced file, it will operate on the global namespace.

[#4] routinet [2011-08-28 23:22:14]

Included files will default to the global namespace.
<?php
//test.php
namespace test {
  include 
'test1.inc';
  echo 
'-',__NAMESPACE__,'-<br />';
}
?>


<?php
//test1.inc
  
echo '-',__NAMESPACE__,'-<br />';
?>


Results of test.php:

--
-test-

上一篇: 下一篇: