什么是 PHP 命名空间?
什么是一般的命名空间?
一个带有示例的外行回答会很棒。
命名空间对函数和类的作用就像作用域对变量的作用一样。它允许您在同一程序的不同部分使用相同的函数或类名,而不会导致名称冲突。
简单来说, 将命名空间视为一个人的姓氏 。如果有两个名为“John”的人,您可以使用他们的姓氏来区分他们。
假设您编写了一个使用名为output(). 您的output()函数获取页面上的所有 HTML 代码并将其发送给用户。
output()
稍后您的应用程序变得更大,并且您想要添加新功能。您添加一个允许您生成 RSS 提要的库。该库还使用一个名为的函数output()来输出最终提要。
当您调用时output(),PHP 如何知道是使用您的output()函数还是使用 RSS 库的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();
如果我们没有命名空间,我们将不得不(可能)在任何时候添加库时更改大量代码,或者想出繁琐的前缀来使我们的函数名称独一无二。使用命名空间,我们可以避免在将第三方代码与我们自己的项目混合时出现命名冲突的问题。