ʹ�������ռ䣺����

(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 �����ռ��е�Ԫ��ʹ��ͬ����ԭ�����磬��������ͨ�����ַ�ʽ���ã�
  1. ���޶����ƣ��򲻰���ǰ׺�������ƣ����� $a=new foo(); �� foo::staticmethod();�������ǰ�����ռ��� currentnamespace��foo ��������Ϊ currentnamespace\foo�����ʹ�� foo �Ĵ�����ȫ�ֵģ����������κ������ռ��еĴ��룬�� foo �ᱻ����Ϊfoo�� ���棺��������ռ��еĺ�������δ���壬��÷��޶��ĺ������ƻ������ƻᱻ����Ϊȫ�ֺ������ƻ������ơ�����μ� ʹ�������ռ䣺��ȫ�ֺ�������/����������
  2. �޶�����,�����ǰ׺�����ƣ����� $a = new subnamespace\foo(); �� subnamespace\foo::staticmethod();�������ǰ�������ռ��� currentnamespace���� foo �ᱻ����Ϊ currentnamespace\subnamespace\foo�����ʹ�� foo �Ĵ�����ȫ�ֵģ����������κ������ռ��еĴ��룬foo �ᱻ����Ϊsubnamespace\foo��
  3. ��ȫ�޶����ƣ��������ȫ��ǰ׺�����������ƣ����磬 $a = new \currentnamespace\foo(); �� \currentnamespace\foo::staticmethod();������������£�foo ���DZ�����Ϊ�����е�������(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
?>