Blogger Information
Blog 42
fans 3
comment 2
visits 32364
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP三十三天作业-简单命名空间实例-2018-05-11
HeartofSunny的博客
Original
780 people have browsed it

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)语句。


Correction status:Uncorrected

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