<?php
    /*
    php 命名空间namespace 存放类 函数 常量
    通过namespace关键字声明命名空间
    /

    namespace China; // 定义一个 my_space 的空间 , 命名空间定义必须在文本第一行
    header(“Content-Type:text/html;charset=utf-8”);
    function A(){
    echo “中国人”;
    }

    namespace USA;
    function A(){
    echo “He is an American.”;
    }

    // 调用
    A(); // 就近原则
    echo “

    “;
    \USA\A(); // \ 表示 公共空间
    echo “

    “;
    \China\A();
    echo “

    “;

    // 多级命名空间 公共空间 \ 命名空间 China\Shanghai\PuDong 空间元素 Student
    namespace China\beijing;
    class A{

    }

    namespace usa\Washington;
    class A{

    }

    $a = new A(); // 就近原则
    $b = new \usa\Washington\A();
    $c = new \China\beijing\A();
    var_dump($a);
    echo “

    “;
    var_dump($b);
    echo “

    “;
    var_dump($c);
    echo “

    “;

    // 访问空间元素 非限定名称访问 完全限定名称访问 限定名称访问
    namespace China\beijing\shunyi;
    function A(){
    echo “顺义.

    “;
    }
    namespace China\beijing;
    function A(){
    echo “北京.

    “;
    }
    A(); // 就近原则 非限定名称访问 (北京)
    \China\beijing\A(); // 完全限定名称访问 (北京)
    shunyi\A(); // 限定名称访问 (顺义)
    \China\beijing\shunyi\A(); // 绝对路径 (顺义)

    // use 引入命名空间
    // 引入命名空间规则 \ + 引入空间 + (去除公共部分,公共部分只能有一级)
    namespace China\beijing\shunyi;
    function getinfo(){
    echo “李白

    “;
    }

    namespace USA;
    function getinfo(){
    echo “aaaaa”;
    }

    use China\beijing\shunyi; // 引入命名空间
    getinfo(); // aaaaa
    shunyi\getinfo(); // 李白 \China\beijing\shunyi\getinfo()

    // 给命名空间起名
    namespace china\beijing;
    class B{

    }
    function b(){
    echo “cccc”;
    }

    namespace usa\hsd;
    class A{

    }
    function a(){
    echo “bbbb”;
    }
    use china\beijing\B as chinaB;
    use function china\beijing\b as i; // 将方法 a 重命名为 i
    i(); // cccc

    // 若页面没有namesp声明,这个页面的元素在公共空间下
    // 命名空间只能存放 类、函数、 const 常量
    // 第一个namesp 前不能有任何代码
    // 包含文件影响当前的命名空间

    ?>