博主信息
博文 43
粉丝 3
评论 1
访问量 36422
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
跨类调用与命名空间+2018年5月9日16时59分
KongLi的博客
原创
989人浏览过

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

例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件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();


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学