博客列表 >命名空间的定义、访问、使用—2018-9-16

命名空间的定义、访问、使用—2018-9-16

THPHP
THPHP原创
2018年09月16日 22:29:24765浏览

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方法
}

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议