Composer包自动加载

时间:2013-03-03 00:19:56

标签: php composer-php packagist

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

链接到我的库github https://github.com/gerardorn/catalogo

2 个答案:

答案 0 :(得分:7)

map your classes for autloading有三种方法可以与作曲家合作。

PSR-0

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

在您的情况下,班级Catalogable有一个名称空间gerardorn\catalogo。要与PSR-0兼容,目录结构为:

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

composer.json中,您应该填写以下内容:

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

类映射

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

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

文件

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


的PHPUnit

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

你正在编写单元测试。您应该注册Travis CI。每次推送到GitHub时它都会运行你的PHPUnit测试,并在发生故障时通过电子邮件发出警告。

答案 1 :(得分:2)

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

即。您的文件Catalogable.php具有名称空间gerardorn\catalogo,因此您的目录结构必须与以下内容匹配。

- src
    - main
        - gerardorn
            - catalogo