【发布时间】:2013-02-17 07:55:27
【问题描述】:
我的图书馆无法正常工作。目录结构是 lib-name/src,里面有一个主目录和一个测试目录,我如何告诉作曲家从 /lib-name/src/main 文件夹加载?
链接到我的库 github https://github.com/gerardorn/catalogo
【问题讨论】:
-
你必须阅读psr-0
标签: php composer-php packagist
我的图书馆无法正常工作。目录结构是 lib-name/src,里面有一个主目录和一个测试目录,我如何告诉作曲家从 /lib-name/src/main 文件夹加载?
链接到我的库 github https://github.com/gerardorn/catalogo
【问题讨论】:
标签: php composer-php packagist
您的目录结构应该与PSR-0 兼容。
即您的文件Catalogable.php 有一个命名空间gerardorn\catalogo,因此您的目录结构必须与以下内容匹配。
- src
- main
- gerardorn
- catalogo
【讨论】:
使用 composer 有 3 种方式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"]
}
第三种方法files不适用于您的情况。
请注意,测试您的库需要 PHPUnit,而不是 运行您的库。因此,您不应该将它作为必需的库。
编写单元测试很好。您应该注册Travis CI。每次你推送到 GitHub 时,它都会运行你的 PHPUnit 测试,并在出现问题时(通过电子邮件)警告你。
【讨论】: