博主信息
博文 28
粉丝 0
评论 0
访问量 21140
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2018-09-06命名空间
阿小的博客
原创
764人浏览过

用{}实现命名空间

实例

<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
    const NAME = 'PHP中文网';
    class Db
    {
        public static function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello';
    }
    
    //print_r(NAME);全局下的函数
    //重新定义print_r()函数
    function print_r($value)
    {
        echo  $value;
    }
    //使用自己定义的print_r()函数
    print_r('你好');
    //使用全局下的print()函数
    \print_r('你好');
}
namespace Two
{

    const NAME = 'PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello world';
    }
}

//全局空间
namespace
{
    const NAME = 'www.php.cn';
    //在全局空间下访问One中的NAME
    echo \One\NAME;
}

运行实例 »

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

导入其他的命名空间

实例

<?php
//use引入namesapce
//为命名空间起别名
namespace test2;
require 'test.php';
use test\Test as TestAlias;  //导入类,并为类起别名
use test1\test1\test1 as test1; //为命名空间起别名

class Test
{
    public static function test()
    {
        return __METHOD__;
    }
}

echo Test::test().'<br>';
echo TestAlias::test().'<br>';
echo test1\Test::test().'<br>';

运行实例 »

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

限定名称、非限定名称、完全限定名称

实例

<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
    const NAME = 'PHP中文网';
    class Db
    {
        public static function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return 'say hello';
    }
    
   
}

//自命名空间,放在前面
namespace Two\Three
{

    const NAME = 'www.PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }

    function hello()
    {
        return 'say hello world';
    }
    echo __NAMESPACE__.'<hr>';
}

namespace Two
{

    const NAME = 'PHP.cn';
    class Db
    {
        public function demo()
        {
            return __METHOD__;
        }
    }
    
    function hello()
    {
        return '你好';
    }
   
    echo NAME.'<br>';    //非限定名称,没有前缀,类似当前文件
    echo Three\NAME.'<br>'; //限定名称,有前缀,使用命名空间前缀
    echo \One\NAME.'<hr>';     //完全限定名称,使用\目录开始查找
    
    echo __NAMESPACE__.'<hr>';     //魔术常量,输出当前命名空间
    
    echo namespace\hello().'<br>';       //namespace类似self
    echo namespace \Three\hello();
}

运行实例 »

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


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学