Blogger Information
Blog 36
fans 1
comment 0
visits 32468
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP命名空间学习namespace-2018年9月6日
宋超的博客
Original
705 people have browsed it

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

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