【问题标题】:What is the point in NameSpaces? [duplicate]命名空间有什么意义? [复制]
【发布时间】:2012-12-27 14:26:13
【问题描述】:

可能重复:
What are namespaces?

据我了解,命名空间允许您在脚本的不同命名空间内拥有同名的函数/变量。

namespace productions\active;
class Slayer 
{
    function Username ()
    {
        $Username = "Test";
        return $Username;
    }
}
namespace productions\experimental;
class Slayer
{
    function Username()
    {
        $Username = "Experiemental"; 
        return $Username;
    }
}

但这提供了什么功能?

此外,如果我的类中有公共函数并且“存在”在命名空间中,会发生什么情况?

【问题讨论】:

  • 命名空间应该是一种更方便的替代方法,它可以使用 Under_Score_Prefixes 手动避免 类名冲突。另见http://en.wikipedia.org/wiki/Namespace_(computer_science)
  • 你有没有遇到过两个同名的类/函数?说两个File 类,一个来自库,一个来自您自己的代码?命名空间解决了这个问题。
  • 我个人认为使用命名空间没有任何实用性,如果你需要做两个独立的事情,那么你会创建两个独立的函数,而不是创建命名空间以具有相同的函数名称。
  • 那么您可能似乎对实际代码几乎没有经验。包含外部库是非常典型的。如果这些库中的类和函数的命名有些传统,那么名称冲突确实并不少见。 File 通常是一个合理的类名,有两个库使用它也就不足为奇了。这不仅仅是关于你的代码。
  • 一个大项目有不止一个程序员。所以每个程序员都必须独立编写代码,这些代码必须与其他程序员的代码一起工作。而且它恰好有相同的类/函数名称 -> 错误。

标签: php namespaces


【解决方案1】:

如果您必须在同一个项目中使用两个具有相同类名的库,那将是显而易见的(是的,这可能会发生)。使用命名空间,您可以为其中一个创建别名,并在不考虑库核心的情况下同时使用两者。

【讨论】:

  • 我个人认为使用命名空间没有任何实用性,如果你需要做两个独立的事情,那么你会创建两个独立的函数,而不是创建命名空间以具有相同的函数名称。
  • 这是几乎所有编程语言中的常用技术。正如@deceze 在对您的问题的评论中提到的那样......想象一下 - 您迫切需要使用一些庞大的库。它定义了名为 File 的类。现在 - 你会在所有这些库文件中搜索和替换“文件”字符串吗?
  • 可能不会;但我只想更改我刚刚创建的类的名称,并以粗体字评论我的更新
  • 如果你在项目的任何地方都使用你的类怎么办?然后你会找到并替换吗?或者更好的例子——两个类名都有意义。你会改哪个名字?命名空间为您提供干净优雅的解决方案...
  • 可以在两分钟内接受答案。
猜你喜欢
  • 2010-10-05
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多