在php中,出现同名函数或是同名类是不被允许的。为防止编程人员在项目中定义的类名或函数名出现重复冲突,在php5.3中引入了命名空间这一概念。
1.命名空间,即将代码划分成不同空间,不同空间的类名相互独立,互不冲突。一个php文件中可以存在多个命名空间,第一个命名空间前不能有任何代码。内容空间声明后的代码便属于这个命名空间,例如:
<?php
echo 111; //由于namespace前有代码而报错
namespace teacher; class person{
function __construct(){
echo 'please study!';
}
}12345678
2.调用不同空间内类或方法需写明命名空间。例如:
<?php
namespace teacher; class person{
function __construct(){
echo 'please study!<br/>';
}
} function person(){
return 'you must stay here!';
}; namespace student; class person{
function __construct(){
echo 'i want to play!<br/>';
}
} new person(); //本空间(student空间)
new \teacher\person(); //teacher空间
new \student\person(); //student空间
echo \teacher\person(); //teacher空间下person函数
//输出:
i want to play!
please study!
i want to play!
you must stay here!12345678910111213141516171819202122232425
3.在命名空间内引入其他文件不会属于本命名空间,而属于公共空间或是文件中本身定义的命名空间。例:
首先定义一个1.php和2.php文件:
<?php //1.phpclass person{
function __construct(){
echo 'i am one!<br/>';
}
}123456
<?phpnamespace newer;require_once './1.php';new person(); //报错,找不到person;new \person(); //输出 i am tow!;12345
<?php //2.phpnamespace twoclass person{ function __construct(){
echo 'i am tow!<br/>';
}
}1234567
<?php
namespace new;require_once './2.php';new person();
//报错,(当前空间)找不到person;new \person();
//报错,(公共空间)找不到person;new \two\person();
//输出 i am tow!;123456
4.下面我们来看use的使用方法:(use以后引用可简写)
namespace school\parents; class man{
function __construct(){
echo 'listen to teachers!<br/>';
}
} namespace school\teacher; class person{
function __construct(){
echo 'please study!<br/>';
}
} namespace school\student; class person{
function __construct(){
echo 'i want to play!<br/>';
}
} new person(); //输出i want to play!
new \school\teacher\person(); //输出please study!
new teacher\person(); //报错
---------- use school\teacher;
new teacher\person(); //输出please study!
---------- use school\teacher as tc;
new tc\person(); //输出please study!
---------- use \school\teacher\person;
new person(); //报错
---------- use \school\parent\man;
new man(); //报错
上面是我整理给大家的php命名空间 namespace 及导入 use 用法,希望今后会对大家有帮助。
相关文章:
php常用的魔术方法
php常用函数
php命名空间的设计思想和缺点
以上就是php命名空间 namespace 及导入 use 的详细用法指南的详细内容。