什么是命名空间?

2022-08-30 06:07:53

什么是 PHP 命名空间?

一般什么是命名空间?

一个外行人的答案和一个例子会很棒。


答案 1

命名空间对函数和类的作用与作用域对变量的作用一样。它允许您在同一程序的不同部分中使用相同的函数或类名,而不会引起名称冲突。

简单来说,将命名空间视为一个人的姓氏。如果有两个人叫“约翰”,你可以用他们的姓氏来区分他们。

场景

假设您编写了一个使用名为 的函数的应用程序。您的函数获取页面上的所有 HTML 代码并将其发送给用户。output()output()

稍后,您的应用程序会变得更大,并且您希望添加新功能。添加一个库,允许您生成 RSS 源。此库还使用名为输出最终源的函数。output()

当你调用 时,PHP如何知道是使用你的函数还是RSS库的函数?事实并非如此。除非您使用的是命名空间。output()output()output()

我们如何解决有两个函数的问题?简单。我们将每个函数放在其自己的命名空间中。output()output()

这看起来像这样:

namespace MyProject;

function output() {
    # Output HTML page
    echo 'HTML!';
}

namespace RSSLibrary;

function output(){
    # Output RSS feed
    echo 'RSS!';
}

稍后,当我们想要使用不同的函数时,我们将使用:

\MyProject\output();
\RSSLibrary\output();

或者我们可以声明我们位于其中一个命名空间中,然后我们可以调用该命名空间的:output()

namespace MyProject;

output(); # Output HTML page
\RSSLibrary\output();

没有命名空间?

如果我们没有命名空间,我们将不得不(可能)在添加库时更改大量代码,或者提出繁琐的前缀以使我们的函数名称唯一。使用命名空间,我们可以避免在将第三方代码与我们自己的项目混合时命名冲突的麻烦。


答案 2

命名空间允许您在名称下放置一堆代码,并且不会与类,函数和常量发生任何命名冲突。

它允许你的代码位于该命名空间中。

PHP 使用有点争议的字符来显示命名空间级别。人们举起武器,因为它也被用作逃避角色。\

要在 PHP 中使用命名空间,请在文件顶部使用类似下面的内容。

namespace my\namespace;

您可以在命名空间的官方 PHP 文档上找到更多信息。


推荐