博客列表 >PHP三十三天作业-简单命名空间实例-2018-05-11

PHP三十三天作业-简单命名空间实例-2018-05-11

HeartofSunny的博客
HeartofSunny的博客原创
2018年05月11日 16:33:40770浏览

Nspace.php

<?php
//声明一个PHP的命名空间
namespace PHP;
class NSpace
{
    public function text(){
        echo '我是存在于PHP空间';
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

Nspace2.php

<?php
//声明一个JAVA的命名空间
namespace JAVA;
//对导入的命名空间的同名方法起个别名
use \PHP\NSpace as NS;
//导入类文件
require 'NSpace.php';

class NSpace
{
    function text(){
        echo '我是存在于JAVA空间';
    }
}
//实例化JAVA空间下的类
$javatext = new NSpace();
//输出JAVA命名空间下的text()方法
$javatext->text();
echo '<br>';
//实例化PHP空间下的类
$text = new NS();
//输出JAVA命名空间下的text()方法
echo $text->text();

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

        php自5.3.0开始,引入了一个namespace关键字以及__NAMESPACE__魔术常量(当然use关键字或use as嵌套语句也同时引入);那么什么是命名空间呢?php官网已很明确的进行了定义并形象化解释,这里直接从php官网copy一段文字[来源]。

        “什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。”

        目前php5.5系列早已推出,php的面向对象编程思想也在逐渐的完善,而本文要学习的namespace关键字的引入就是为了解决php面向对象编程过程中已出现的各种“麻烦”;具体麻烦如下:

        1    、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

        2、为了缓解麻烦1,通常编写各种class时会使用较长的类名或为实现不同功能的class添加名称前缀(或后缀)。

        3、不使用魔法函数__autoload的情况下,而每个class又独占一个php文件时,为了调用不同的class,会在使用这些class的另外的php文件的开头位置书写较多的include(或require或require_once)语句。


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