PHP

PHP中命名空间的方法

时间:2024-09-26 08:54:26 PHP 我要投稿
  • 相关推荐

PHP中命名空间的方法

  【提要】本篇《PHP中命名空间的方法【1】》特别为需要方法编程学习的朋友收集整理的,仅供参考。内容如下:

  PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。下面是小编为大家搜索整理的PHP中命名空间的方法,希望能给大家带来帮助!更多精彩内容请及时关注我们考试网!

  概述

  PHP对于命名空间的支持,经历了一段艰难的旅程。幸运的是,PHP从5.3开始引入了命名空间。自从PHP引入了命名空间,PHP代码的适用结构也得到了大大的改善。许多编程语言早就有了命名空间的概念,相对于其他语言来说,PHP对于命名空间的支持,稍微有点晚了。不管如何,每一种新特性的引入都有其目的,和其他语言一样,PHP引入命名空间也主要是为了解决名字冲突的问题。

  命名空间(namespace)的概念

  代码如下:

  当在字符串中使用命名空间名字的时候,一定不要忘了转义

  可以将命名空间想象成一个抽屉,你可以在抽屉里放入铅笔、尺子、A4纸等,这些都是你自己的私有物品。在你的抽屉下面是别人的抽屉,别人也可以在抽屉里放入相同的物品。为了不拿错物品,你们决定在自己的抽屉上贴上标签,这样就可以清晰的看到某个物品是属于谁的了。

  之前,开发者必须在类、函数和常量中添加下划线,用来使自己的代码独立其他于代码库。这相当于所有人都给自己的物品贴上标签之后,一起放入了一个更大的抽屉里。尽管这也是一种组织代码的方式,但是这种方式是非常低效的。

  命名空间的到来就是为了解决这个问题。我们可以在不同的命名空间里声明相同的函数、类和常量,而不会造成名字上的冲突。本质上,命名空间无非是一种分等级标记PHP代码的方式。

  正在使用命名空间

  有一点需要注意的是,我们正在间接的使用命名空间。从PHP 5.3开始,所有在非用户定义的命名空间中的声明(类、函数、常量),都默认的属于全局命名空间。

  全局命名空间中包含了所有PHP内部的定义,如echo()、mysqli_connect()和Exception类。由于全局命名空间并没有独立的标识名,所以它经常被成为全局空间(global space)。

  定义命名空间

  命名空间的定义必须是PHP文件的第一条语句。唯一允许在定义命名空间之前使用的语句是declare语句。

  定义命名空间很简单,只需要使用关键字namespace即可。命名空间的名字需要遵循PHP文件中其他标识符的命名规则。

  下面是定义一个命名空间的示例:

  代码如下:

  namespace MyNamespace{}

  class Test{}

  如果想定义一个属于全局空间的代码块,也是使用namespace关键字,但是后面不加命名空间的名字,如下:

  代码如下:

  namespace {}

  class Test{}

  我们甚至可以在一个文件中定义多个命名空间,如下:

  代码如下:

  namespace MyNamespace {}

  namespace MySecondNamespace {}

  namespace {}

  我们也可以将一个命名空间分散在不同的文件中,文件包含的处理程序会自动合并他们。因此,限制大量的命名空间在同一个文件中定义是一个很好的编程实践,就像我们通常单独为每个类定义一个单独的文件一样。

  复制代码 代码如下:

  有一点需要注意的是,包含命名空间代码块的{是可选的,可以用也可以不用。事实上,只要我们坚持在一个文件中只定义一个命名空间,那么我们就可以完全省略{,这样也可以使我们的代码看起来更加简洁。

  子命名空间

  命名空间可以遵循一个特定的层级,就像我们电脑文件系统中得目录一样。子命名空间对于将一个项目结构化尤其特别有用。例如,你的项目需要访问数据库,你可能会想将所有数据库相关的代码(如数据库异常处理等)放在同一个子目录下。

  为了保持灵活性,将子命名空间放在子目录中是非常明智的做法。这会使你的代码结构更清晰,而且会使遵循PSR-0标准的autoloaders的使用变得更容易。

  PHP使用反斜线作为命名空间的分隔符,有趣的是,PHP甚至考虑过使用笑脸:)作为命名空间的分隔符。

  子命名空间定义示例:

  代码如下:

  namespace MyProjectDatabase

  class Connection {}

  可以使用尽可能多的子命名空间:

  代码如下:

  namespace MyProjectBlogAuthHandlerSocial;

  class Twitter {}

  有一点需要注意的是,PHP并不支持命名空间的嵌套定义,下面的代码会导致一个致命错误:Namespace declarations cannot be nested。

  代码如下:

  namespace MyProject {}

  namespace Database {}

  class Connection { }

  &nbsp

【PHP中命名空间的方法】相关文章:

插花作品的命名方法12-26

如何解决Windows8中C盘重命名失败的方法07-16

在PHP7中不要做的10件事09-06

Excel中if函数使用的方法06-16

php实习心得12-01

php实习报告11-07

音乐中节奏的训练方法06-20

冲突管理中的有效沟通方法05-05

php工作总结11-11

php是什么格式?01-14