What are namespaces?(什么是命名空间?)
问题描述
什么是 PHP 命名空间?
What are PHP Namespaces?
一般来说什么是命名空间?
What are Namespaces in general?
带有示例的外行回答会很棒.
A Layman answer with an example would be great.
推荐答案
命名空间对函数和类的作用就像作用域对变量的作用一样.它允许您在同一程序的不同部分使用相同的函数或类名,而不会导致名称冲突.
Namespacing does for functions and classes what scope does for variables. It allows you to use the same function or class name in different parts of the same program without causing a name collision.
简单来说,将命名空间视为一个人的姓氏.如果有两个名为John"的人,您可以使用他们的姓氏来区分他们.
In simple terms, think of a namespace as a person's surname. If there are two people named "John" you can use their surnames to tell them apart.
假设您编写的应用程序使用名为 output()
的函数.您的 output()
函数获取页面上的所有 HTML 代码并将其发送给用户.
Suppose you write an application that uses a function named output()
. Your output()
function takes all of the HTML code on your page and sends it to the user.
稍后您的应用程序变得更大并且您想要添加新功能.您添加一个允许您生成 RSS 提要的库.该库还使用名为 output()
的函数来输出最终提要.
Later on your application gets bigger and you want to add new features. You add a library that allows you to generate RSS feeds. This library also uses a function named output()
to output the final feed.
当你调用 output()
时,PHP 如何知道是使用你的 output()
函数还是 RSS 库的 output()
功能?它没有.除非你正在使用命名空间.
When you call output()
, how does PHP know whether to use your output()
function or the RSS library's output()
function? It doesn't. Unless you're using namespaces.
我们如何解决拥有两个 output()
函数的问题?简单的.我们将每个 output()
函数固定在其自己的 命名空间.
How do we solve having two output()
functions? Simple. We stick each output()
function in its own namespace.
看起来像这样:
namespace MyProject;
function output() {
# Output HTML page
echo 'HTML!';
}
namespace RSSLibrary;
function output(){
# Output RSS feed
echo 'RSS!';
}
稍后当我们想要使用不同的功能时,我们会使用:
Later when we want to use the different functions, we'd use:
MyProjectoutput();
RSSLibraryoutput();
或者我们可以声明我们在其中一个命名空间中,然后我们可以调用该命名空间的 output()
:
Or we can declare that we're in one of the namespaces and then we can just call that namespace's output()
:
namespace MyProject;
output(); # Output HTML page
RSSLibraryoutput();
没有命名空间?
如果我们没有命名空间,我们必须(可能)在添加库时更改大量代码,或者想出繁琐的前缀来使我们的函数名称独一无二.使用命名空间,我们可以避免在将第三方代码与我们自己的项目混合时出现命名冲突的问题.
No Namespaces?
If we didn't have namespaces we'd have to (potentially) change a lot of code any time we added a library, or come up with tedious prefixes to make our function names unique. With namespaces, we can avoid the headache of naming collisions when mixing third-party code with our own projects.
这篇关于什么是命名空间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:什么是命名空间?
基础教程推荐
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01