美文网首页
「php化整为零系列」五、命名空间

「php化整为零系列」五、命名空间

作者: Bill_Wang | 来源:发表于2016-08-02 18:23 被阅读41次
源码地址:https://github.com/wilfordw/phpTutorial

该系列我只写我的理解,非官方解释,如不够专业请见谅

命名空间存在主要是为了解决同名类同名方法在同一个项目中的冲突问题,虽然用起来比较繁琐但还是不得不用,为了代码整齐易于管理。标准php建议我们命名空间命名与目录一致,不过这里我为了做测试实例就放统一目录

<?php

//test1.php
// 命名空间的分隔符是反斜杠,该声明语句必须在文件第一行。
// 命名空间中可以包含任意代码,但只有 **类, 函数, 常量** 受命名空间影响。
namespace NameA\Test;

// 该类的完整限定名是 \NameA\Test\A , 其中第一个反斜杠表示全局命名空间。
class A{
    public function show(){
        echo '\NameA\Test\A';
    }
}

// 你还可以在文件中定义第二个命名空间,接下来的代码将都位于 \NameB\Test .
namespace NameB\Test;

class B{
    public function show(){
        echo '\NameB\Test\B';
    }
}
<?php

//test2.php
// 你还可以用花括号定义命名空间
namespace NameC\Test{

    require_once('test1.php');
     // 导入来自其他命名空间的名称,并重命名,
    // 注意只能导入类,不能用于函数和常量
    use \NameA\Test\A as ClassA;

    class C{
    
        public function show(){
            // 实例化来自子命名空间的对象:
            $b = new \NameB\Test\B;
            $b->show();
            $a = new ClassA;
            $a->show();
        }
    }

}
<?php
//test3.php
    require_once('test2.php');

    use \NameC\Test\C as ClassC;

    $c = new ClassC;
    $c->show();
    //输出 \NameB\Test\B\NameA\Test\A

如上例子 展示了同文件中多命名空间方括号包裹命名空间use命名空间与别名定义
值得注意的时候定义命名空间的时候使用NameA\Test,但引用的时候需要\NameA\Test,要不在NamaB\Test命名空间中使用NameA\Test 引用的其实是NamaB\Test\NameA\Test!

优化

php5.6以后对命名空间有一定的优化可以直接通过命名空间引用常量和函数

<?php
namespace Name\Space {
    const FOO = 42;
    function f() { echo __FUNCTION__."\n"; }
}

namespace {
    //支持对常量的引用
    use const Name\Space\FOO;
    //支持对函数的引用
    use function Name\Space\f;

    echo FOO."\n";//42
    f();//Name\Space\f
}

相关文章

  • 「php化整为零系列」五、命名空间

    该系列我只写我的理解,非官方解释,如不够专业请见谅 命名空间存在主要是为了解决同名类同名方法在同一个项目中的冲突问...

  • PHP命名空间和公共空间

    PHP命名空间 PHP 命名空间(namespace)是在PHP 5.3中加入的。PHP 命名空间可以解决以下两类...

  • php命名空间与自动加载

    命名空间(PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法...

  • PHP 新手入门指南 - 使用命名空间

    首先来了解一下命名空间: (PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是...

  • php初级讲义11-命名空间

    命名空间的概念 命名空间是一种封装事物的方法。 命名空间用namespace关键字来声明。 以PHP或php为名或...

  • php命名空间

    [PHP命名空间的作用、为什么使用命名空间?] 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或...

  • PHP命名空间

    一、命名空间概述 1、什么是命名空间 1)从广义上来说,命名空间是一种封装事物的方法。2)在很多地方都可以见到这种...

  • PHP——命名空间

    PHP命名空间的作用、为什么使用命名空间 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出...

  • php 命名空间

    命名空间 什么是命名空间? 广义来说,是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目...

  • PHP命名空间

    什么是命名空间 命名空间是在php5.3以后的版本引入的。命名空间是一个抽象概念,在编程中用于封装划分一组方法or...

网友评论

      本文标题:「php化整为零系列」五、命名空间

      本文链接:https://www.haomeiwen.com/subject/uozfsttx.html