博客列表 >命名空间的基础认识_2018-09-06

命名空间的基础认识_2018-09-06

theYon的博客
theYon的博客原创
2018年09月09日 23:43:47513浏览

命名空间的基础认识

主要知识点

1)命名空间的创建与用法

2)use的用法


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

* 非限定名称: 类似当前目录下访问(在当前空间内访问不需要添加空间前缀)

* 限定名称: 类似于相对路径访问(当前文件名\该文件空间内的子名)

* 完全限定名称: 从全局空间开始,类似于从根目录开始(\上一级目录\上一级目录空间的子名)

* 例如:root/a/b 表示b的目录路径

* 当b访问自身时,只需直接访问自身空间

* 当b访问a时,需要通过全局访问到a的空间

* 而a访问b时,需要通过a/b就能访问b的空间,而不用通过全局访问

代码

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

<?php
 namespace one{
     class Test
     {
         private $name = 'Tom';

         public function show() {
             return 'i am '.$this->name;
         }
     }
 }

 namespace two{
    class Test
    {
        private $name = 'Jack';
        const SITE='FEED';

        public function show() {
            return 'i am '.$this->name;
        }
    }
}

namespace other{
    class Test
    {
        private $name = 'None';

        public function show() {
            return 'i am '.$this->name;
        }
    }
}

namespace three{
    use one\Test;
    echo (new Test())->show().'<hr>';
    echo '当前命名空间是: ',__NAMESPACE__,'<hr>';
    echo (new \two\Test)->show().'<br>';
    echo \two\Test::SITE.'<hr>';
}

namespace {
    // use other\Test;
    echo '当前命名空间是: ',__NAMESPACE__,'<br>';
    echo (new other\Test)->show().'<hr>';
}

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

test1/Test1.php

<?php

namespace test1;

require './test2/Test2.php';
use test2\Test2;

class Test1
{
    public function index()
    {
        $getit = new Test2();
        return $getit->get();
    }
}

test2/Test2.php

<?php

namespace test2;

class Test2
{
    public function get()
    {
        return __CLASS__;
    }
}

tes3.php

<?php


require './test1/Test1.php';
use test1\Test1;

$test = new Test1();

echo $test->index();

运行结果

微信截图_20180909234253.png

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