在php中怎样使用命名空间,为什么要使用命名空间,而且怎样定义命名空间。在这篇文章中主要来讨论这些问题。
什么是命名空间:在C++中曾经接触过命名空间,命名空间能让我们的代码看着不太累赘,而且使用命名空间很方便,让我们的变量的命名更加的简洁。命名空间主要解决这样的问题,
1.用户编写的代码与PHP内部的函数/类/常量或者是第三方的类,函数,常量之间的命名冲突。
2.为很长的标识符名称的创建一个别名,提高代码的可读性。
怎样来定义命名空间:
<?php
namespace MyProject;
?>
而且我们可以在同一个文件中定义不同的命名空间的代码。在声明命名空间之前,唯一合法的代码是用于定义源代码编码方式declare,所有非PHP代码包含空白符都不能出现在命名空间之前。怎样来使用命名空间
<?php
namespace file2Project\subnamespace;
const FOO = 1;
function fOO(){
echo "你好,我在CurrentSpace命名空间中";
}
class foo
{
static function staticmethod()
{}
}
fOO();
?>
<!-- 可以看到的是我们在代码的最后加上了meta charset="UTF-8"这个代码之后,。浏览器就变成了
我们的汉字的编码形式 -->
<meta charset="utf-8">我们在这个php文件中定义一个常量,定义一个函数,和一个类并且在类中定义一个而函数,然后将这些代码放在一个命名空间。这这个命名空间是file2Project\subnamespace
然后我们创建另外的一代码:
file2.php
<?php
namespace file2Project;
include 'file1.php';//包含的 是文件的名字,而不是命名空间的名字
const FOO=2;
function fOO()
{
echo "我是file2.php中的函数";
echo "<hr/>";
}
class foo
{
static function staticmethod()
{
echo "通过类名调用类中的函数双点,通过对象调用类中的函数或者是通过箭头";
}
}
//非限定名称,,也就是在前面是不使用命名空间,这个时候调用的函数是在file2Project这个
//命名空间中
fOO();
foo::staticmethod();
//通过限定名称调用函数
echo "<hr/>";
echo FOO;
subnamespace\fOO();
?>
我们在文件2也是使用了命名空间,而且当我们可以看到的是在文件1中的命名空间,和文件2的命名空间有一定的联系,或者说命名1中的命名空间可以看做是命名空间下面的一个目录。这样我们就可以在文件2中使用在1中定义的函数,常量,和类中的函数。