博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
命名空间 (一)
阅读量:6858 次
发布时间:2019-06-26

本文共 1408 字,大约阅读时间需要 4 分钟。

  hot3.png

 什么是命名空间?    

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

 例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。
 具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。
 另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。
 这个原理应用到程序设计领域就是命名空间的概念。

 

 为什么需要定义命名空间?

主要用来解决在编写类库或者应用程序时创建可重用代码类与函数的两类问题:
 1:用户编写的代码与php内部或者第三方的类库,函数,常量的命名冲突
 2:为很长的标识符定义一个别名,提高源代码的可读性

针对上面的问题举一个例子:

class Memcached{       //...some code }

 

这里定义一个Memcached类当执行时给出一个致命的错误,Cannot redeclare class Memcached  不能重复声明Memcached,

因为Memcached类已经内置在PHP中,为了使程序更加容易阅读而你又不想使用其它的名称,你就可以使用命名空间,创建这个类。

namespace My_libs;class Memcached{	}

 

如何定义命名空间

单个命名空间定义实例:

namespace myproject{    const FOO = 1;    function foo(){}    class foo{}}

另外也可以在一个文件中定义多个命名空间,有两种方式可以定义多个命名空间

1:使用大括号语法 :包含类,常量,函数;

namespace myproject{    const FOO = 1;    function foo(){}    class foo{}}namespace myproject1{    const BAR = 1;    function bar(){}    class bar{}}

使用大括号语法需要的注意问题:开始的declare语句外,命名空间的括号外不得有任何PHP代码。

2:使用简单组合语法:

namespace myproject    const FOO = 1;    function foo(){}    class foo{}namespace myproject1    const BAR = 1;    function bar(){}    class bar{}

虽然可以这样使用命名空间,但官方都不见建议在一个文件中定义多个命名空间

 

总结一下定义命名空间需要注意的:

1:虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量,也就是说命名空间只能作用在类,函数,常量

2:在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。另外,所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前:

3:不建议在一个文件中声名多个命名空间

转载于:https://my.oschina.net/freax/blog/403299

你可能感兴趣的文章
Python Decorator
查看>>
delphi debug release区别是什么?
查看>>
substitute Simple JavaScript Template :
查看>>
9、如何清空流及缓存
查看>>
gvim汉化及配置
查看>>
ubuntu下JMF RTP不支持单播接收
查看>>
fastboot烧写命令
查看>>
深度测试与alpha混合(1)
查看>>
15幅非常有创意的影子摄影作品欣赏
查看>>
SQL Server 2008 VALUES
查看>>
[算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
查看>>
使用DMV和DMF分析数据库性能
查看>>
PHP验证IP地址输入的准确性:数组数值验证
查看>>
HashMap概述
查看>>
在rem布局下使用背景图片以及sprite
查看>>
JAVA设计模式之【抽象工厂模式】
查看>>
数字电视的电子节目指南(EPG)及其系统
查看>>
11 复用与多址
查看>>
附录A 编译安装Hadoop
查看>>
android studio building project info 错误
查看>>