Blogger Information
Blog 34
fans 1
comment 0
visits 23162
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间的基础认识_2018-09-06
theYon的博客
Original
514 people have browsed it

命名空间的基础认识

主要知识点

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

Correction status:qualified

Teacher's comments:
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