我无法让我的图书馆工作。目录结构是lib-name / src,在主目录和测试目录中,如何告诉作曲家从/ lib-name / src / main文件夹加载?
链接到我的库github https://github.com/gerardorn/catalogo
答案 0 :(得分:7)
map your classes for autloading有三种方法可以与作曲家合作。
推荐的方式是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,但运行库不需要。因此,您不应该将其作为必需的库。
你正在编写单元测试。您应该注册Travis CI。每次推送到GitHub时它都会运行你的PHPUnit测试,并在发生故障时通过电子邮件发出警告。
答案 1 :(得分:2)
您的目录结构应该PSR-0兼容。
即。您的文件Catalogable.php具有名称空间gerardorn\catalogo
,因此您的目录结构必须与以下内容匹配。
- src
- main
- gerardorn
- catalogo