博客列表 >PHP命名空间学习namespace-2018年9月6日

PHP命名空间学习namespace-2018年9月6日

宋超的博客
宋超的博客原创
2018年09月11日 23:07:47707浏览

1.全名空间的声明与使用实例

<?php
/**命名空间
 */


namespace One{
const NAME = 'xiaopi';
class Db
{
    public static function demo()
    {
        return __METHOD__;
    }

}
 function hello()
{
    return '你好'.NAME.'<hr>';
}
//echo hello();
//echo \Two\NAME;
}

namespace Two{
    const NAME = 'xiaoli';

    class Db
    {
        public static function demo()
        {
            return __METHOD__;
        }

    }
    function hello()
    {
        return '你好'.NAME.'<hr>';
    }
echo NAME; //非限定名称,类似当前目录的文件  全命名空间使用
echo THREE\Show::NAME.'<br>'; //限定名称:使用全名空间前缀 类似子目录/相当目录
echo \One\NAME.'<hr>'; //完全限定名称:从根空间或全局空间开始向下访问
echo \Two\THREE\Show::NAME;
echo THREE\Show::NAME.'<br>';

}


namespace Two\THREE{
    class Show
    {
    const NAME = '我是'.__NAMESPACE__.'常量';
    }
}
namespace {
    echo One\db::demo(),'<br>';
    echo Two\db::demo(),'<br>';
    echo Two\THREE\Show::NAME;

}

//1.多个命名空间之间的分隔符是反斜线\
//2.全局空间和根空间也是反斜线
//3.一个文件中有多个命名空间时访问全名空间下的常量需要注意顺序,如果在类中可以不在意顺序直接访问

运行实例 »

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


2.use导入命名空间实例

<?php
/**
 * 使用命名空间
 */
namespace TEST2;
include 'test3.php';
use TEST3\Test3;
use TEST3\Test2 as newtest;
use TEST4\a\b\c\d\Test4 as T4;

class Test2{
    public static function test2(){
        return __METHOD__;
    }
}
echo Test2::test2().'<br>';
    echo newtest::test3().'<br>';
    echo Test3::test3().'<br>';
echo T4::test4();

运行实例 »

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

test3.PHP

<?php
namespace TEST3;
class Test3{
    public static function test3(){
        return __METHOD__;
    }
}
class Test2{
    public static function test3(){
        return __METHOD__;
    }
}

namespace TEST4\a\b\c\d;
class Test4{
    public static function test4(){
        return'我是<strong style="color:red;">'.__METHOD__.'</strong>方法';
    }
}

运行实例 »

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

4.非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
非限定名称: 当前文件或空间中使用时.省略空间名称,使用默认或当前的命名空间  . demo1
限定名称:通常用在子父类访问,或全局空间访问其他空间 前面需要添加命名空间才可访问   demo/  demo/demo1
完全限定名称:用在从根空间/目录访问时  包含了全局前缀操作符及空间名称  /deom/demo1
三者的关系就是像一个目录文件 可以理解为: 完全限定名称>限定名称>非限制名称    很类似 linux下访问目录的规则.
1.cd /1/2/3 完全限制精确打开
2.cd ../1 上级或cd 2/3 下级
3.不限制名称 当前目录直接打开 cd 2

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