【问题标题】:Why are underscores converted to directory separators in PSR-0?为什么下划线在 PSR-0 中被转换为目录分隔符?
【发布时间】:2015-11-25 19:53:45
【问题描述】:

我想弄清楚为什么类名中的下划线会被转换为PSR-0 中的目录分隔符?我确信这是有原因的,但我想不出为什么。

如果我在命名空间 \namespace\subnamespace 中有一个名为 my_class_name 的类 当我想要的是\namespace\subnamespace\my_class_name 时,那不会转换为\namespace\subnamespace\my\class\name 吗? 我知道如果我的类系统是围绕这个构建的,它会起作用,但如果我想要目录分隔符,我会使用反斜杠而不是下划线。

【问题讨论】:

  • 一般来说,你不应该在类名中使用下划线。驼色箱是首选。
  • 我个人没有,但我使用的是与 PSR-0 兼容的自动加载器,但必须使用一组我没有创建的类(其中包含类名中的下划线)。特别是github.com/Setasign/FPDI。我知道他们有一个 composer.json 文件可以解决我的问题,但是我的系统没有运行 composer(这本身就是另一个问题,但那是另一天的问题)。不过,这不是重点。我真的只是想问为什么 PSR-0 会包含这样的内容?
  • 请注意,PSR-4 自动加载不会将下划线转换为目录分隔符。

标签: php standards psr-0


【解决方案1】:

因为历史。在 PHP 获得对项目的命名空间支持之前,使用下划线分隔的位作为一种穷人的命名空间是很常见的。在创建 PSR-0 时,仍有足够多的事情发生,以使其成为一个切实可行的决定。

【讨论】:

  • 对我来说已经足够好的答案了。我想我唯一的选择是使用作曲家,向我的自动加载器添加硬编码逻辑,或者尝试修改类以消除下划线。我不知道最后一个在技术上是否合法,所以我可能不会走那条路。
  • 我还在other languages 中看到了这个可怜人的命名空间模式。我想知道它叫什么...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 2011-08-28
  • 2012-01-04
相关资源
最近更新 更多