当前位置:Gxlcms > PHP教程 > php namespace的用法

php namespace的用法

时间:2021-07-01 10:21:17 帮助过:25人阅读

php namespace的用法:【namespace Article;】,表示创建一个名为Article的命名空间。需要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码。

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。

(推荐教程:php视频教程)

命名空间将代码划分出不同的空间(区域),每个空间的常量、函数、类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念。

创建一个命名空间需要使用namespace关键字,这样:

  1. <?php
  2. //创建一个名为'Article'的命名空间
  3. namespace Article;
  4. ?>

要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,下面的写法都是错误的:

例一

  1. //在脚本前面写了一些逻辑代码
  2. <?php
  3. $path = "/";
  4. class Comment { }
  5. namespace Article;
  6. ?>

例二

  1. </html>
  2. <?php
  3. namespace Article;
  4. ?>

为什么要说第一个命名空间呢?因为同一脚本文件中可以创建多个命名空间。

下面我创建了两个命名空间,顺便为这两个空间各自添加了一个Comment类元素:

  1. <?php
  2. //创建一个名为'Article'的命名空间
  3. namespace Article;
  4. //此Comment属于Article空间的元素
  5. class Comment {
  6. }
  7. //创建一个名为'MessageBoard'的命名空间
  8. namespace MessageBoard;
  9. //此Comment属于MessageBoard空间的元素
  10. class Comment {
  11. }
  12. ?>

在不同空间之间不可以直接调用其它元素,需要使用命名空间的语法:

  1. <?php
  2. namespace Article;
  3. class Comment {
  4. }
  5. namespace MessageBoard;
  6. class Comment {
  7. }
  8. //调用当前空间(MessageBoard)的Comment类
  9. $comment = new Comment();
  10. //调用Article空间的Comment类
  11. $article_comment = new \Article\Comment();
  12. ?>

可以看到,在MessageBoard空间中调用article空间里的Comment类时,使用了一种像文件路径的语法: \空间名\元素名

除了类之外,对函数和常量的用法是一样的,下面我为两个空间创建了新的元素,并在MessageBoard空间中输出了它们的值。

  1. <?php
  2. namespace Article;
  3. const PATH = '/article';
  4. function getCommentTotal() {
  5. return 100;
  6. }
  7. class Comment {
  8. }
  9. namespace MessageBoard;
  10. const PATH = '/message_board';
  11. function getCommentTotal() {
  12. return 300;
  13. }
  14. class Comment {
  15. }
  16. //调用当前空间的常量、函数和类
  17. echo PATH;
  18. ///message_board
  19. echo getCommentTotal();
  20. //300
  21. $comment = new Comment();
  22. //调用Article空间的常量、函数和类
  23. echo \Article\PATH;
  24. ///article
  25. echo \Article\getCommentTotal();
  26. //100
  27. $article_comment = new \Article\Comment();
  28. ?>

然后我的确得到了Article空间的元素数据。

相关推荐:php培训

以上就是php namespace的用法的详细内容,更多请关注gxlcms其它相关文章!

人气教程排行