php命名空间

时间:2020-01-30 19:19:53   收藏:0   阅读:92

阅读目录

    1. 命名空间的介绍

    2. 命名空间的三种访问方式

在一个php文件中声明两个相同的函数名的函数, 会报致命错误

<?php
function 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

这时候我们可以使用命名空间来解决这个问题

<?php

namespace ms1;
function getmsg(){
    echo ‘123‘;
}

namespace ms2;
function getmsg(){
    echo ‘456‘;
}

getmsg();

这样就相当于分别在两个空间里定义相同名的函数

但是直接调用getmsg函数的时候会直接当前空间下离它最近的函数:

456

如果要访问第一个名称空间中的函数则:

<?php

namespace ms1;
function getmsg(){
    echo ‘123‘;
}

namespace ms2;
function getmsg(){
    echo ‘456‘;
}

\ms1\getmsg();
123

而且, 使用命名空间可以在当前命名空间调用当前命名空间之下的空间的函数

<?php

namespace ms1;
function getmsg(){
    echo ‘123‘;
}
\ms2\getmsg();

namespace ms2;
function getmsg(){
    echo ‘456‘;
}
456

 

命名空间只对类, 函数, 常量起作用, 而且常量必须是const定义的常量, 而不是define定义的常量

<?php

namespace 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

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!