Blogger Information
Blog 43
fans 3
comment 1
visits 30216
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
跨类调用与命名空间+2018年5月9日16时59分
KongLi的博客
Original
818 people have browsed it

什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。

例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt 可以同时在目录

/home/greg 和

 /home/other 

中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。


命名空间,即将代码划分成不同空间,不同空间的类名相互独立,互不冲突。一个php文件中可以存在多个命名空间,第一个命名空间前不能有任何代码(否则会报错)。内容空间声明后的代码便属于这个命名空间,例如:


Class类:

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/9
 * Time: 15:41
 */

namespace dome1{
    class animal
    {
        //添加属性
        public $type='猫';

        //添加方法
        function action()
        {
            return $this->type.'上树';
        }
    }
}

namespace dome2{
    class animal
    {
        public $type='狗';

        function action()
        {
            return $this->type.'食屎';
        }
    }
}


PHP脚本:

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/9
 * Time: 15:48
 */


namespace dome1{
    class animal
    {
        //添加属性
        public $type='猫';

        //添加方法
        function action()
        {
            return $this->type.'上树';
        }
    }
}

namespace cat1{
    use dome1\animal as cat; //引入命名空间并使用 as 取别名
    class dome
    {
        function execute()
        {
            //实例化 animal 命名空间中的第一个类
            $cat = new cat();
            return $cat->action();
        }
    }
}

namespace catTest {
    //使用 use 引入命名空间,并使用另外代替
    use \cat1\dome as cat;
    $d = new cat();
    //调用输出引入的类的方法
    echo $d->execute();
}


测试:

通过引入外部类中的命名空间需要先将其引入,即:require_once 'class/animal.php';  否则会出现找不到 animal() 的情况

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/9
 * Time: 15:58
 */

//通过 require_once 引入其它类中的命名空间中的类进行输出
require_once 'class/animal.php';

//创建狗对象并调用其方法输出
$d = new dome2\animal();
echo $d->action();


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