Blogger Information
Blog 35
fans 0
comment 0
visits 32669
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间的定义、访问、使用—2018-9-16
THPHP
Original
766 people have browsed it

1、用大括号语法实现在一个脚本中创建多个命名空间并访问成员:

实例

<?php
namespace a{
    const NAME = '天弘';
    class Db{
        public static function hello(){
            return '欢迎你,来到编程世界';
        }
    }
    function demo(){
        return __METHOD__;
    }
}
namespace b\c{
    class Db{
        public static function hello(){
            return '欢迎你,恭喜来到精彩的编程世界';
        }
    }
}
namespace b{
    const NAME = '天天';
    class Db{
        public static function hello(){
            return '欢迎你天弘,恭喜来到精彩的编程世界';
        }
    }
    function demo(){
        return __METHOD__;
    }
    // 访问的是 b命名空间的Db类hello方法
    echo Db::hello(),'<hr>'; 
    // 访问的是 a命名空间的demo方法
    echo \a\demo(),'<hr>';
    // 访问的是 a命名空间的子命名空间hello方法
    echo c\Db::hello();
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

2、使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问:

demo.php文件:

实例

<?php
namespace a;//命名空间
require 'demo1.php';
use b\c\e as he; // 导入命名空间,并且起个别名
// 访问b的命名空间的demo方法,由于起个别名所以直接使用别名加\访问
echo he\demo(),'<hr>';
echo he\Db::hello(),'<hr>';
echo he\NAME,'<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo1.php文件:

实例

<?php
namespace b\c\e; // 命名空间
const NAME = '天天';
class Db{
    public static function hello(){
        return '欢迎你天弘,恭喜来到精彩的编程世界';
    }
}
function demo(){
    return __METHOD__;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


3、非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?

实例

<?php
namespace a{
    const NAME = '天弘';
    class Db{
        public static function hello(){
            return '欢迎你,来到编程世界';
        }
    }
    function demo(){
        return __METHOD__;
    }
}
namespace b\c{
    class Db{
        public static function hello(){
            return '欢迎你,恭喜来到精彩的编程世界';
        }
    }
}
namespace b{
    const NAME = '天天';
    class Db{
        public static function hello(){
            return '欢迎你天弘,恭喜来到精彩的编程世界';
        }
    }
    function demo(){
        return __METHOD__;
    }
    // 访问的是 b命名空间的Db类hello方法
    echo Db::hello(),'<hr>'; // 非限定名称,不用带有\可以直接访问当前的hello方法
    // 访问的是 a命名空间的demo方法
    echo \a\demo(),'<hr>'; // 完全限定名称,带有\,返回根目录选择a目录中的demo方法
    // 访问的是 a命名空间的子命名空间hello方法
    echo c\Db::hello();// 限定名称,带有\ ,返回父级的目录选择c中hello方法
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post