在一个php文件中声明两个相同的函数名的函数, 会报致命错误
<?phpfunction getmsg(){ echo ‘123‘;}function getmsg(){ echo ‘456‘;}
Fatal error: Cannot redeclare getmsg() (previously declared in E:\phpstudy_pro\WWW\project1\public\test.php:10) in E:\phpstudy_pro\WWW\project1\public\test.php on line 15
这时候我们可以使用命名空间来解决这个问题
<?phpnamespace ms1;function getmsg(){ echo ‘123‘;}namespace ms2;function getmsg(){ echo ‘456‘;}
getmsg();
这样就相当于分别在两个空间里定义相同名的函数
但是直接调用getmsg函数的时候会直接当前空间下离它最近的函数:
456
如果要访问第一个名称空间中的函数则:
<?phpnamespace ms1;function getmsg(){ echo ‘123‘;}namespace ms2;function getmsg(){ echo ‘456‘;}\ms1\getmsg();
123
而且, 使用命名空间可以在当前命名空间调用当前命名空间之下的空间的函数
<?phpnamespace ms1;function getmsg(){ echo ‘123‘;}\ms2\getmsg();namespace ms2;function getmsg(){ echo ‘456‘;}
456
命名空间只对类, 函数, 常量起作用, 而且常量必须是const定义的常量, 而不是define定义的常量
<?phpnamespace ms1;define(‘MN‘, ‘YYF‘);namespace ms2;define(‘MN‘, ‘YLY‘);
Notice: Constant MN already defined in E:\phpstudy_pro\WWW\project1\public\test.php on line 19
<?php
namespace ms1;const MN = ‘YYF‘;namespace ms2;const MN = ‘YLY‘;echo MN;
YLY