PHP命名空间(Namespace)的使用详解
原文地址:http://www.cnblogs.com/kuyuecs/p/3556421.html
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
本文提到的常量:PHP5.3开始const关键字可以用在类的外部。const和define都是用来声明常量的(它们的区别不详述),
但是在命名空间里,define的作用是全局的,而const则作用于当前空间。我在文中提到的常量是指使用const声明的常量。
命名空间将代码划分出不同的空间(区域),每个空间的常量、函数、类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的‘封装'的概念。
当前脚本文件的第一个命名空间前面不能有任何代码,下面的写法都是错误的:
为什么要说第一个命名空间呢?因为同一脚本文件中可以创建多个命名空间。
示例:
[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]
<?php
//创建一个名为'Article'的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment { }
//创建一个名为'MessageBoard'的命名空间
namespace MessageBoard;
//此Comment属于MessageBoard空间的元素
class Comment { }
?>
[/pcsh]
在不同空间之间不可以直接调用其它元素,需要使用命名空间的语法:
[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]
<?php
namespace Article;
class Comment { }
namespace MessageBoard;
class Comment { }
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>
[/pcsh]
可以看到,在MessageBoard空间中调用article空间里的Comment类时,使用了一种像文件路径的语法: \空间名\元素名
最后更新于 2017-03-17 15:58:08 并被添加「」标签,已有 655 位童鞋阅读过。
此处评论已关闭