【问题标题】:PSR-2. When to capitalize directories?PSR-2。什么时候大写目录?
【发布时间】:2015-10-27 05:47:51
【问题描述】:

据我所知,根据 PSR-2 标准,我们应该将包含类的目录名称大写。但是如果目录还包含一些其他文件,例如样式和脚本怎么办?

假设我有一个插件目录,每个插件都可以包含模板和其他东西:

plugins
  PluginName // lowercase?
    PluginName.php // Contains base class "PluginName"
    templates
      home.tpl
    css
      css.css
    js
      js.js
  PluginName2
    ....

这个结构正确吗?

【问题讨论】:

  • PSR-4 “标准”仅涉及 包含脚本 的非 Unix 路径。你如何构建你的资产不是其中的一部分。但是,通常您不希望在类资源中混入非 php 文件。 “PSR-2”是一种编码风格指南。
  • 对,混合是个坏主意,但在这种情况下,插件是“模块”,每个单元都提供完整的功能
  • @ymakux 能否请您参考“我们应该将包含类的目录名称大写”

标签: php psr-0 psr-4 psr-2 psr-1


【解决方案1】:

您可以随意命名您的目录。

但是,如果您打算使用 PSR-0 或 PSR-4 自动加载 PHP 类,则相关类名部分所涉及的目录名必须完全匹配。

PSR-2 没有做出任何假设,也没有给出类名或命名空间必须有哪些情况的规则。

PSR-1 确实在 chapter 3 中声明:“必须在 StudlyCaps 中声明类名。”但是,这只会影响包含此类的文件的文件名。如果您使用 PSR-4 自动加载,如果您为每个包含代码的目录定义了 Name\Space -> directory/for/that/namespace 的整个映射,您仍然可以完全避免在路径中使用命名空间的任何部分。

PSR-1 没有关于命名空间格式的任何规则,因此您也可以避免在此处使用大写字母,因此避免在目录路径中使用大写字母。

请注意,在将命名空间/类名映射到文件系统路径和文件时,PSR-0 和 PSR-4 自动加载都区分大小写。所以最后,无论如何,你最终都会有一个区分大小写的文件系统布局。

另外请注意,大多数命名空间也使用 StudlyCaps,我认为使用小写字母是不寻常的。

【讨论】:

    【解决方案2】:

    对于 PHP 中应该是什么样的结构没有明确定义的方式。

    我什至认为目录名不必大写。

    但是,插件或任何依赖项可以由任何包管理器 (Composer) 处理吗?

    据我所知,您的结构看起来非常好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2021-04-12
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多