【发布时间】:2014-08-20 06:51:58
【问题描述】:
我正在努力弄清楚如何正确构建和自动加载我的第一个作曲家包。我知道如果我遵循 PSR-0 命名约定,自动加载应该“正常工作”。我正在尝试设置:
- 厂商:程序员
- 包名:CoreLibs
我已经成功地调试了一个包含包的项目,通过在ClassLoader.php 文件的findFileWithExtension() 函数中打印输出搜索路径
/home/stuart/Desktop/test-project/vendor/Programster/CoreLibs/Programster/Programster/CoreLibs/Core.php
我知道该文件实际上位于:
/home/stuart/Desktop/test-project/vendor/Programster/CoreLibs/Core.php
我的包的 composer.json 文件:
{
"name": "Programster/CoreLibs",
"type": "library",
"description": "Core libraries for PHP 5.3+",
"keywords": ["core","library"],
"homepage": "http://svn.yadda-yadda.com/php/core-libs",
"license": "none",
"authors": [
{
"name": "xxxx",
"email": "my.email@email.com",
"homepage": "http://mywebsite.com/",
"role": "Developer"
}
],
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"Programster": "Programster"
}
}
}
以下是项目中的一个小脚本,其中包含用于测试是否正常工作的包:
<?php
require_once(__DIR__ . '/../vendor/autoload.php');
$loader = new \Composer\Autoload\ClassLoader();
$loader->register();
use \Programster\CoreLibs as programster;
programster\Core::println("hello world");
项目的composer.json文件包含包:
{
"repositories": [ { "type": "composer", "url": "http://satis.mydomain.com/" } ],
"require": {
"Programster/CoreLibs": "dev-trunk"
}
}
是我的包配置错误,还是我真的需要在 CoreLibs 存储库源代码中创建 Programster/CoreLibs/ 子目录?
【问题讨论】:
-
PSR-0 已弃用,您可能希望使用更友好的 PSR-4。
-
@yo ,找不到有关弃用 PSR-0 的消息。你能为我分享一些关于它的链接吗?
-
您是在寻求建议还是在解决某些问题?
-
好吧,也许“已弃用”这个词并不合适,但 PSR-4 仍然更简洁,并且在设计时考虑了作曲家。像 Drupal 这样的项目已经采用了它。 github.com/php-fig/fig-standards/blob/master/accepted/…
-
@sectus 我正在尝试找到解决我的包自动加载问题的解决方案。也许这需要更改配置或更改目录结构。
标签: php package composer-php