PHP 命名空间 namespace

命名空间的理解

类似于分区域 / 领域。区域外的东西不影响内部,

类(包括抽象类和traits)、接口、函数和常量 的名称不受外部影响

命名空间的定义:

可以普通定义,打一个名字上去。

可以目录结构的形式定义

namespace MyProject

namespace MyProject\Sub\Level;

同一个文件内定义多个命名空间

<?php

namespace MyProject {

const CONNECT_OK = 1;

class Connection { /* ... */ }

function connect() { /* ... */  }

}

namespace AnotherProject {

const CONNECT_OK = 1;

class Connection { /* ... */ }

function connect() { /* ... */  }

}

?>

使用命名空间:

命名空间内  可以直接调用内部 函数、class

命名空间内  可以相对路径的形式调用  子空间里的 函数参数; 参考 PHP引用文件 和 图片的相对路劲

命名空间内  可以直接加上完整的 空间名称

namespace Foo\Bar\subnamespace;

namespace Foo\Bar

staticmethod();

subnamespace\staticmethod();

\Foo\Bar\staticmethod();

获取当前命名空间

__NAMESPACE__  // 打印出命名空间完整路径

namespace // 可调用当前命名空间里的函数, 例如: namespace\func();

use 和 命名空间

a. use 没有引入文件的功能

b. use 是引用命名空间里的 class

例如: 你有2个文件:

A.php

<?php

namespace Foo\Bar;

class classname{

}

?>

B.php

<?php

require_once('A.php');

use Foo\Bar\classname;

new classname();

?>

结论:

require_once('A.php');

use Foo\Bar\classname as name;

new name();

new Foo\Bar\classname();

use Foo\Bar\classname;

new classname();

三者是一样的效果

全局空间:

没有定义命名空间, 那么所有的 function 或者 class 就处于全局空间中( 也就是我们平时 正常的代码 )

名称前加上前缀 \ 表示该名称是全局空间中的名称, 例如:

\func(); // 表示调用非命名空间中的 func() 函数

constant('constname'); // 可以指定命名空间路径

使用命名空间: 后备全局函数/常量

未完待续……

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容