【问题标题】:Define class "Object" in global namespace在全局命名空间中定义类“对象”
【发布时间】:2014-03-11 19:41:42
【问题描述】:

我正在编写一个库,它为 php 的本机类型(数组、字符串、整数等)提供面向对象的方法。

此外,该库将提供一个抽象的 Object 类,程序员可以扩展该类以在其对象中获得一些不错的功能(主要是类和实例自省)。

关注点:我很想在全局命名空间中定义Object 类。

我知道这通常被认为是不好的做法,但考虑到我图书馆的性质,我觉得可能会有例外。

问题:

作为潜在用户,您会如何看待在全局命名空间中定义的这个基类?您认为以上是在全局命名空间中定义单个类的正当理由吗?

【问题讨论】:

  • 它有什么理由必须在全局命名空间中? SW\StringSW\ArraySW\Object 等呢?
  • 我只考虑将Object 类放在全局命名空间中。而且它不一定非要在那里——我只是想听听人们的意见。其背后的原因是在没有指定命名空间或不必导入命名空间的情况下使用它更有意义。只是感觉……很自然。但我希望该库不会破坏太多(我知道,这是相对的)现有库/框架。
  • 命名空间正是为了解决这个问题:给代码提供通用的,可能与居住地命名冲突。 “对象”几乎是通用的,可能会发生冲突。这个选择对我来说似乎很明显。

标签: php


【解决方案1】:

根据 PSR 的建议,您不应将任何内容放入全局命名空间。如果您正在编写一个库,您应该考虑阅读 PSR 建议,这样您可以确保您的库与大多数其他库有良好的表现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2013-12-13
    • 1970-01-01
    • 2011-01-15
    • 2019-09-21
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多