如果PHP库可以注册自己的自动加载器,那么为什么PSR-0要求它们位于统一目录中?

如果PHP库可以注册自己的自动加载器,那么为什么PSR-0要求它们位于统一目录中?,php,autoload,spl,psr-0,Php,Autoload,Spl,Psr 0,我正在构建一个框架(这是一个巨大的简化——请不要建议使用现有的框架,这是没有帮助的),我希望能够将其他库集成到这个框架中 PSR-0建议将每个子命名空间中的所有文件都包含在它们自己的特定目录中。为了让我的框架用户不那么复杂,我希望将所有内容都保存在一个名称空间中,但将文件组织到目录中 如果PHP库可以使用spl\u register\u autoload()注册自己的自动加载器,那么为什么必须遵守此目录结构?简单地避开PSR-0,对我的类使用我自己的自动加载器,然后对我可能使用的任何Symfon

我正在构建一个框架(这是一个巨大的简化——请不要建议使用现有的框架,这是没有帮助的),我希望能够将其他库集成到这个框架中

PSR-0建议将每个子命名空间中的所有文件都包含在它们自己的特定目录中。为了让我的框架用户不那么复杂,我希望将所有内容都保存在一个名称空间中,但将文件组织到目录中


如果PHP库可以使用
spl\u register\u autoload()
注册自己的自动加载器,那么为什么必须遵守此目录结构?简单地避开PSR-0,对我的类使用我自己的自动加载器,然后对我可能使用的任何Symfony类使用(例如)Symfony的自动加载器,是否可行/允许?

没有人强迫你遵守标准。当然,你可以制作自己的自动加载器并使用它

该规范很可能是为了使库更容易理解而创建的,其思想是,如果所有代码都使用相同的结构,那么任何人都应该能够立即知道在哪里可以找到某个类

以下标准具有某些优点,例如:

  • 了解该标准的人将已经知道如何使用该代码
  • 标准兼容的工具可以与粘附的代码(例如,IDE插件)一起使用
  • 假定符合标准的代码已经可以与所有附着的代码一起使用,即使它不是专门为您自己的代码制作的(例如,第三方自动加载程序应该能够加载您的代码,而您自己的自动加载程序应该能够加载第三方代码)

缺点可能是您可能不喜欢该标准。如果是这样的话,那么在决定是否遵循该标准时,您也应该权衡其优点。

此外,如果其他库遵循该标准,您可以只使用一个自动加载器从多个库中加载类,而不是将自动加载器用于您的类,然后必须为其类加载Symfony的autoloader,然后为其类加载library X的autoloader


只要自动加载器符合PSR,而另一个库的目录结构也符合PSR,您就可以坚持使用一个自动加载器。

做您想做的事。PSR-0是一个推荐标准,使用与否,由你决定。+1’回答了这个问题。问题是有效的,值得回答。PSR是由PHP框架互操作性组创建的:您的问题的答案在组名中。(为什么要使用
n
自动加载器,而可以用一个来控制它们呢?)另一个问题被过于热心的主持人过早地解决了。我询问了规范背后的原因,如果有人知道,这是一个明确的事实——我不知道。我问忽略规范是否可行(或者“可取”是一个更好的词),这将是回答者能够充分解释并拥有的东西!此外,我看不到任何争论。这种结束似乎只是人们不想被问到一个问题。