���ƽ�������

(PHP 5 >= 5.3.0, PHP 7)

��˵�����ƽ�������֮ǰ�������ȿ�һЩ��Ҫ�Ķ��壺

�����ռ����ƶ���
���޶�����Unqualified name

�����в����������ռ�ָ����ı�ʶ�������� Foo

�޶�����Qualified name

�����к��������ռ�ָ����ı�ʶ�������� Foo\Bar

��ȫ�޶�����Fully qualified name

�����а��������ռ�ָ��������������ռ�ָ�����ʼ�ı�ʶ�������� \Foo\Bar�� namespace\Foo Ҳ��һ����ȫ�޶����ơ�

���ƽ�����ѭ���й���

  1. ����ȫ�޶����Ƶĺ�������ͳ����ĵ����ڱ���ʱ���������� new \A\B ����Ϊ�� A\B��
  2. ���еķ��޶����ƺ��޶����ƣ�����ȫ�޶����ƣ����ݵ�ǰ�ĵ�������ڱ���ʱ����ת�������磬��������ռ� A\B\C ������Ϊ C����ô�� C\D\e() �ĵ��þͻᱻת��Ϊ A\B\C\D\e()��
  3. �������ռ��ڲ������е�û�и��ݵ������ת�����޶����ƾ�������ǰ����ϵ�ǰ�������ռ����ơ����磬�������ռ� A\B �ڲ����� C\D\e()���� C\D\e() �ᱻת��Ϊ A\B\C\D\e() ��
  4. ���޶��������ݵ�ǰ�ĵ�������ڱ���ʱת������ȫ������̵ĵ������ƣ������磬��������ռ� A\B\C ����ΪC���� new C() ��ת��Ϊ new A\B\C() ��
  5. �������ռ��ڲ�������A\B�����Է��޶����Ƶĺ���������������ʱ�����ġ�����Ժ��� foo() �ĵ��������������ģ�
    1. �ڵ�ǰ�����ռ��в�����Ϊ A\B\foo() �ĺ���
    2. ���Բ��Ҳ����� ȫ��(global) �ռ��еĺ��� foo()��
  6. �������ռ䣨����A\B���ڲ��Է��޶����ƻ��޶������ࣨ����ȫ�޶����ƣ��ĵ�����������ʱ�����ġ������ǵ��� new C() �� new D\E() �Ľ������̣� new C()�Ľ���:
    1. �ڵ�ǰ�����ռ��в���A\B\C�ࡣ
    2. �����Զ�װ����A\B\C��
    new D\E()�Ľ���:
    1. ��������ǰ����ϵ�ǰ�����ռ����Ʊ�ɣ�A\B\D\E��Ȼ����Ҹ��ࡣ
    2. �����Զ�װ���� A\B\D\E��
    Ϊ������ȫ�������ռ��е�ȫ���࣬����ʹ����ȫ�޶����� new \C()��

Example #1 ���ƽ���ʾ��

<?php
namespace A;
use 
B\DC\as F;

// ��������

foo();      // ���ȳ��Ե��ö����������ռ�"A"�еĺ���foo()
            // �ٳ��Ե���ȫ�ֺ��� "foo"

\foo();     // ����ȫ�ֿռ亯�� "foo" 

my\foo();   // ���ö����������ռ�"A\my"�к��� "foo" 

F();        // ���ȳ��Ե��ö����������ռ�"A"�еĺ��� "F" 
            // �ٳ��Ե���ȫ�ֺ��� "F"

// ������

new B();    // ���������ռ� "A" �ж������ "B" ��һ������
            // ���δ�ҵ��������Զ�װ���� "A\B"

new D();    // ʹ�õ�����򣬴��������ռ� "B" �ж������ "D" ��һ������
            // ���δ�ҵ��������Զ�װ���� "B\D"

new F();    // ʹ�õ�����򣬴��������ռ� "C" �ж������ "E" ��һ������
            // ���δ�ҵ��������Զ�װ���� "C\E"

new \B();   // ����������ȫ�ֿռ��е��� "B" ��һ������
            // ���δ���֣������Զ�װ���� "B"

new \D();   // ����������ȫ�ֿռ��е��� "D" ��һ������
            // ���δ���֣������Զ�װ���� "D"

new \F();   // ����������ȫ�ֿռ��е��� "F" ��һ������
            // ���δ���֣������Զ�װ���� "F"

// ������һ�������ռ��еľ�̬�����������ռ亯��

B\foo();    // ���������ռ� "A\B" �к��� "foo"

B::foo();   // ���������ռ� "A" �ж������ "B" �� "foo" ����
            // ���δ�ҵ��� "A\B" �������Զ�װ���� "A\B"

D::foo();   // ʹ�õ�����򣬵��������ռ� "B" �ж������ "D" �� "foo" ����
            // ����� "B\D" δ�ҵ��������Զ�װ���� "B\D"

\B\foo();   // ���������ռ� "B" �еĺ��� "foo" 

\B::foo();  // ����ȫ�ֿռ��е��� "B" �� "foo" ����
            // ����� "B" δ�ҵ��������Զ�װ���� "B"

// ��ǰ�����ռ��еľ�̬��������

A\B::foo();   // ���������ռ� "A\A" �ж������ "B" �� "foo" ����
              // ����� "A\A\B" δ�ҵ��������Զ�װ���� "A\A\B"

\A\B::foo();  // ���������ռ� "A\B" �ж������ "B" �� "foo" ����
              // ����� "A\B" δ�ҵ��������Զ�װ���� "A\B"
?>