php命名空间

瘦欲@ 提交于 2020-01-30 18:06:53

阅读目录

    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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!