首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >psr-0和composer是如何工作的?

psr-0和composer是如何工作的?
EN

Stack Overflow用户
提问于 2014-02-17 17:04:52
回答 1查看 693关注 0票数 0

我将用一个例子来问这个问题。假设我有一个项目目录,如下所示。

代码语言:javascript
复制
project

  vendor

      samplevendor

  src

  composer.json

首先,我想知道我是否正确地将composer.json文件放在了项目目录中,以便在供应商目录中安装库?

代码语言:javascript
复制
 "autoload":{
      "psr-0": {
              "samplevendor\\package": "lib/"
                }
            }

那么composer将在哪里配置自动加载,以查找与项目根相关的类samplevendor\package\sampleclass?在看过symfony2 composer.locked文件中的以下几行之后,我提出了这个问题:

代码语言:javascript
复制
 "autoload": {
            "psr-0": {
                "Doctrine\\Common\\Annotations\\": "lib/"
            }
        }

更新:我在autoload_namespaces.php中找到了对应的名称空间映射,这似乎不符合psr-0:

‘’Doctrine\Common\Annotation\‘=>数组(’Doctrine\Common\Annotation\‘注释数组(’Doctrine\Common\Annotation\‘’Doctrine\Common\Annotation\‘‘/主义/注释/lib’)

EN

回答 1

Stack Overflow用户

发布于 2014-02-18 08:04:07

您可以根据需要将composer.json放在项目中的任何位置,但对于纯composer.json(和HTML/CSS/JS)项目,最好将文件放在最上面的目录中。这样,如果你创建了一个库或者想要一些其他好的副作用,Composer将能够找到它。(它们中有很多不会直接影响Composer或您的软件的工作方式)。

通过运行composer init来创建初始composer.json是一个好主意。Composer将询问您供应商名称和软件名称。我建议你在这里给出一个合理的答案。此外,您可以将自己添加为开发人员,立即添加一些依赖项(不一定需要),最后创建初始文件。

PSR-0自动加载意味着要在目录中搜索给定的名称空间或类名的前缀(请记住那些Underscore_Classname_Namespace_Emulation),即一个名为\Namespace\Class的被配置为"psr-0": {"Namespace\\": "src"}的类将位于src/Namespace/Class.php (如果文件不在那里,也许另一个组件能够加载那个确切的类,因此自动加载不会立即失败- Composer将记录该失败,并查看以后的自动加载定义是否可以加载它)。

您在autoload_namespaces.php文件中看到了所需库的不同定义,这一点是正确的。Composer必须从位于vendor内部的不同目录加载这些类,并且您自己的类将从composer.json文件的autoload部分中给定的位置自动加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21824740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档