什么是PHP名称空间?

名称空间一般是什么?

一个Layman的答案加上一个例子会很棒.

推荐答案

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

简而言之,think of a namespace as a person's surname.如果有两个人叫"约翰",你可以用他们的姓氏来区分他们.

情景

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

后来,你的应用程序变得越来越大,你想添加新功能.您可以添加一个库来生成RSS提要.这个库还使用一个名为output()的函数来输出最终提要.

当您调用output()时,PHP如何知道是使用您的output()函数还是使用RSS库的output()函数呢?不是的.Unless您正在使用名称空间.

实例

我们如何解决拥有两个output()函数的问题呢?很简单.我们把每个output()个函数都放在它自己的namespace个函数中.

它看起来就像这样:

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();

没有名字空间?

如果我们没有名称空间,我们就必须(潜在地)在任何时候添加库时更改大量代码,或者想出冗长的前缀来使函数名唯一.使用名称空间,我们可以避免在将第三方代码与我们自己的项目混合时出现命名冲突的头痛问题.

Php相关问答推荐

如何使用PHP停止foreach循环中的重复项?

PHP中的圆生成器在国际日期变更线上失败

PHP:PHP手册-Manual

根据WooCommerce中的自定义用户元数据值更改用户角色

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

如何用十进制和字母数字减go 和添加 id

PHP 支持 APNG 文件吗?

使用产品自定义字段作为 WooCommerce 中特定用户角色的折扣百分比

如何正确判断 PHP 是否已正确配置为使用 DOMDocument?

在shopware 6.5上可以使用什么事件来判断刚刚支付的订单的状态

WooCommerce checkout 流程中基于所选选项添加自定义费用

Shopware 6.4.20店铺激活问题

Woocommerce API 的 PHP Curl 附加参数

PHP:如何将多列sql查询结果转换成数组

php/html OnSubmit 禁用输入类型提交未给出预期结果

PHP删除具有相同键的项目,除了具有最低值的项目

为什么在解压缩具有混合字符串和 int 键的关联数组时出现错误消息无法使用位置参数...?

PHP 自动函数参数和变量

NetBeans 不显示中文内容

getenv() 有时在 CodeIgniter 4 中返回 false.为什么?