使锟斤拷锟斤拷锟斤拷锟秸间:锟斤拷锟斤拷

(PHP 5 >= 5.3.0, PHP 7)

锟斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟斤拷锟斤拷锟斤拷占锟街帮拷锟斤拷锟斤拷锟斤拷私锟� PHP 锟斤拷锟斤拷锟街拷锟揭癸拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷占锟斤拷械锟皆拷氐摹锟斤拷锟斤拷越锟� PHP 锟斤拷锟斤拷锟秸硷拷锟斤拷锟侥硷拷系统锟斤拷一锟斤拷锟津单碉拷锟斤拷取锟斤拷锟斤拷募锟较低筹拷蟹锟斤拷锟揭伙拷锟斤拷募锟斤拷锟斤拷锟斤拷址锟绞斤拷锟�

  1. 锟斤拷锟斤拷募锟斤拷锟斤拷锟绞斤拷锟�foo.txt锟斤拷锟斤拷锟结被锟斤拷锟斤拷为 currentdirectory/foo.txt锟斤拷锟斤拷锟斤拷 currentdirectory 锟斤拷示锟斤拷前目录锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷前目录锟斤拷 /home/foo锟斤拷锟斤拷锟斤拷募锟斤拷锟斤拷锟斤拷锟斤拷锟轿�/home/foo/foo.txt锟斤拷
  2. 锟斤拷锟铰凤拷锟斤拷锟斤拷锟绞斤拷锟�subdirectory/foo.txt锟斤拷锟斤拷锟结被锟斤拷锟斤拷为 currentdirectory/subdirectory/foo.txt锟斤拷
  3. 锟斤拷锟斤拷路锟斤拷锟斤拷锟斤拷式锟斤拷/main/foo.txt锟斤拷锟斤拷锟结被锟斤拷锟斤拷为/main/foo.txt锟斤拷
PHP 锟斤拷锟斤拷锟秸硷拷锟叫碉拷元锟斤拷使锟斤拷同锟斤拷锟斤拷原锟斤拷锟斤拷锟界,锟斤拷锟斤拷锟斤拷锟斤拷通锟斤拷锟斤拷锟街凤拷式锟斤拷锟矫o拷
  1. 锟斤拷锟睫讹拷锟斤拷锟狡o拷锟津不帮拷锟斤拷前缀锟斤拷锟斤拷锟斤拷锟狡o拷锟斤拷锟斤拷 $a=new foo(); 锟斤拷 foo::staticmethod();锟斤拷锟斤拷锟斤拷锟角帮拷锟斤拷锟斤拷占锟斤拷锟� currentnamespace锟斤拷foo 锟斤拷锟斤拷锟斤拷锟斤拷为 currentnamespace\foo锟斤拷锟斤拷锟绞癸拷锟� foo 锟侥达拷锟斤拷锟斤拷全锟街的o拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿猴拷锟斤拷锟斤拷锟秸硷拷锟叫的达拷锟诫,锟斤拷 foo 锟结被锟斤拷锟斤拷为foo锟斤拷 锟斤拷锟芥:锟斤拷锟斤拷锟斤拷锟斤拷占锟斤拷械暮锟斤拷锟斤拷锟斤拷锟轿达拷锟斤拷澹拷锟矫凤拷锟睫讹拷锟侥猴拷锟斤拷锟斤拷锟狡伙拷锟斤拷锟斤拷锟狡会被锟斤拷锟斤拷为全锟街猴拷锟斤拷锟斤拷锟狡伙拷锟斤拷锟斤拷锟狡★拷锟斤拷锟斤拷渭锟� 使锟斤拷锟斤拷锟斤拷锟秸间:锟斤拷全锟街猴拷锟斤拷锟斤拷锟斤拷/锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
  2. 锟睫讹拷锟斤拷锟斤拷,锟斤拷锟斤拷锟角白猴拷锟斤拷锟斤拷疲锟斤拷锟斤拷锟� $a = new subnamespace\foo(); 锟斤拷 subnamespace\foo::staticmethod();锟斤拷锟斤拷锟斤拷锟角帮拷锟斤拷锟斤拷锟斤拷占锟斤拷锟� currentnamespace锟斤拷锟斤拷 foo 锟结被锟斤拷锟斤拷为 currentnamespace\subnamespace\foo锟斤拷锟斤拷锟绞癸拷锟� foo 锟侥达拷锟斤拷锟斤拷全锟街的o拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿猴拷锟斤拷锟斤拷锟秸硷拷锟叫的达拷锟诫,foo 锟结被锟斤拷锟斤拷为subnamespace\foo锟斤拷
  3. 锟斤拷全锟睫讹拷锟斤拷锟狡o拷锟斤拷锟斤拷锟斤拷锟饺拷锟角白猴拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷疲锟斤拷锟斤拷纾� $a = new \currentnamespace\foo(); 锟斤拷 \currentnamespace\foo::staticmethod();锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷拢锟絝oo 锟斤拷锟角憋拷锟斤拷锟斤拷为锟斤拷锟斤拷锟叫碉拷锟斤拷锟斤拷锟斤拷(literal name)currentnamespace\foo锟斤拷

锟斤拷锟斤拷锟斤拷一锟斤拷使锟斤拷锟斤拷锟斤拷锟街凤拷式锟斤拷实锟斤拷锟斤拷

file1.php

<?php
namespace Foo\Bar\subnamespace;

const 
FOO 1;
function 
foo() {}
class 
foo
{
    static function 
staticmethod() {}
}
?>

file2.php

<?php
namespace Foo\Bar;
include 
'file1.php';

const 
FOO 2;
function 
foo() {}
class 
foo
{
    static function 
staticmethod() {}
}

/* 锟斤拷锟睫讹拷锟斤拷锟斤拷 */
foo(); // 锟斤拷锟斤拷为 Foo\Bar\foo resolves to function Foo\Bar\foo
foo::staticmethod(); // 锟斤拷锟斤拷为锟斤拷 Foo\Bar\foo锟侥撅拷态锟斤拷锟斤拷staticmethod锟斤拷resolves to class Foo\Bar\foo, method staticmethod
echo FOO// resolves to constant Foo\Bar\FOO

/* 锟睫讹拷锟斤拷锟斤拷 */
subnamespace\foo(); // 锟斤拷锟斤拷为锟斤拷锟斤拷 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 锟斤拷锟斤拷为锟斤拷 Foo\Bar\subnamespace\foo,
                                  // 锟皆硷拷锟斤拷姆锟斤拷锟� staticmethod
echo subnamespace\FOO// 锟斤拷锟斤拷为锟斤拷锟斤拷 Foo\Bar\subnamespace\FOO
                                  
/* 锟斤拷全锟睫讹拷锟斤拷锟斤拷 */
\Foo\Bar\foo(); // 锟斤拷锟斤拷为锟斤拷锟斤拷 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 锟斤拷锟斤拷为锟斤拷 Foo\Bar\foo, 锟皆硷拷锟斤拷姆锟斤拷锟� staticmethod
echo \Foo\Bar\FOO// 锟斤拷锟斤拷为锟斤拷锟斤拷 Foo\Bar\FOO
?>

注锟斤拷锟斤拷锟斤拷锟斤拷锟饺拷锟斤拷唷拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟斤拷锟饺拷薅锟斤拷锟斤拷疲锟斤拷锟斤拷锟� \strlen() 锟斤拷 \Exception 锟斤拷 \INI_ALL锟斤拷

Example #1 锟斤拷锟斤拷锟斤拷锟秸硷拷锟节诧拷锟斤拷锟斤拷全锟斤拷锟洁、锟斤拷锟斤拷锟酵筹拷锟斤拷

<?php
namespace Foo;

function 
strlen() {}
const 
INI_ALL 3;
class 
Exception {}

$a = \strlen('hi'); // 锟斤拷锟斤拷全锟街猴拷锟斤拷strlen
$b = \INI_ALL// 锟斤拷锟斤拷全锟街筹拷锟斤拷 INI_ALL
$c = new \Exception('error'); // 实锟斤拷锟斤拷全锟斤拷锟斤拷 Exception
?>