php命名空间

Posted Hosea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php命名空间相关的知识,希望对你有一定的参考价值。

阅读目录

    1. 命名空间的介绍

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

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

<?php
function getmsg(){
    echo ‘123‘;
}

function getmsg(){
    echo ‘456‘;
}
Fatal error: Cannot redeclare getmsg() (previously declared in E:phpstudy_proWWWproject1public	est.php:10) in E:phpstudy_proWWWproject1public	est.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‘;
}

ms1getmsg();
123

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

<?php

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

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_proWWWproject1public	est.php on line 19
<?php

namespace ms1; const MN = ‘YYF‘; namespace ms2; const MN = ‘YLY‘; echo MN;
YLY

 

以上是关于php命名空间的主要内容,如果未能解决你的问题,请参考以下文章

现代PHP-命名空间

PHP命名空间

xml 中的 Android 谷歌地图片段。我得到“意外的命名空间前缀”

PHP命名空间面向对象以及构造函数

php命名空间

命名空间