1

我无法让我的图书馆工作。目录结构是 lib-name/src,里面有一个主目录和一个测试目录,我如何告诉作曲家从 /lib-name/src/main 文件夹加载?

链接到我的图书馆 github https://github.com/gerardorn/catalogo

4

2 回答 2

7

有 3 种方法可以映射您的类以使用 composer 进行自动加载。

PSR-0

推荐的方式是兼容PSR-0 。该协议描述了库的目录结构。每个命名空间都需要是一个目录。带下划线的类也是分开的(PEAR 风格)。

在您的情况下,Catalogable类有一个 namespace gerardorn\catalogo。要与 PSR-0 兼容,目录结构是:

- src
   - main
      - gerardorn
         - catalogo
            - Catalogable.php

在你的composer.json你应该把以下内容:

"autoload" : {
    "psr-0" : {"gerardorn" : "src/main"}
}

类图

或者,您可以使用classmap. 无论命名空间如何,都会在目录中搜索类。

"autoload": {
    "classmap": ["src/main"]
}

文件

第三种方法files不适用于您的情况。


PHPUnit

请注意,需要 PHPUnit 来测试您的库,而不是运行您的库。因此,您不应该将其作为必需的库。

编写单元测试很好。您应该注册Travis CI。每次您推送到 GitHub 时,它都会运行您的 PHPUnit 测试,并在出现问题时(通过电子邮件)警告您。

于 2013-03-03T10:53:11.703 回答
2

您的目录结构应该与PSR-0兼容。

即,您的文件Catalogable.php有一个 namespace gerardorn\catalogo,因此您的目录结构必须与以下内容匹配。

- src
    - main
        - gerardorn
            - catalogo
于 2013-03-03T10:35:52.420 回答