我已经设置了两个项目,一个“init”和一个库,这是init所需要的。它们都设置了PSR-0自动加载,但是库中的自动加载值不会添加到初始化项目中的供应商/作曲家/autoload_namespaces.php中。
示例作曲家。来自库的json:
{
"name": "lxp/library",
"description": "A test library",
"autoload": {
"psr-0": {
"LXP\\Library": "src/"
}
}
}
示例作曲家。来自需要该库的项目的json:
{
"name": "lxp/init",
"name": "A test init",
"autoload": {
"psr-0": {
"LXP\\Init": "src/"
}
},
"repositories": [
{
"type": "composer",
"url": "http://satis.repo.redacted/"
}
],
"require": {
"lxp/library": "dev-master"
}
}
该库包含文件src/LXP/library/Something中的类LXP\library\Something。php。
需要库的项目在src/LXP/Init/Now文件中包含类LXP\Init\Now。php。
在“init”项目中运行composer install时,它会下载库项目并将其正确地放入vendor中,但不包括vendor/composer/autoload_名称空间。php不包含库的自动加载信息,只包含当前项目的信息。
我做错了什么?如果在库项目中运行dump autoload,则自动加载的名称空间。php文件是正确的,并且一个快速引导脚本确认它确实拾取了类。
编辑-这是satis生成的包的问题。json。为了修复它,我必须添加来自库的composer的自动加载信息。将json转换为我提供给satis的json文件,这似乎是不必要的重复,因此我可能做得不对。有没有一个地方可以为satis库存储自动加载的信息?例如,萨提斯能读懂作曲家的作品吗。它扫描的库中存在的json文件?
编辑#2-萨蒂斯不读作曲家的作品。来自指定为“包”类型的存储库的JSON。事后看来,这是显而易见的,因为“包”用于没有编写器的库。json,并且是一种围绕它们包装类似于composer的依赖关系管理的方法。
换衣服。json的存储库改为“vcs”类型意味着编写器。读取json,解析信息(包括自动加载规范)并将其存储在包中。json。
@seldaek-谢谢你暗示我的satis配置是问题所在,我希望这能澄清我这个位置上的任何人的satis/作曲家行为。
这取决于您如何通过Composer安装库。例如,当作为package
type下载时(我相信与composer
type相同),composer从不读取composer。json
文件,因此您应该使用vcs
或git
类型。见:GH-6846。
这里是作曲家。json
哪种应该有效:
{
"require": {
"lxp/library": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "http://satis.repo.redacted/"
}
]
}
然后运行:composer安装
。
要进行故障排除,请尝试运行:
作曲家转储自动加载-o-vvv
.作曲家诊断-vvv
尝试composer dump autoload
命令。
我认为你可能犯了两个可能的错误,会导致这种情况:
我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行
我不熟悉使用composer和psr-0。我尝试了一个使用composer和psr-0的小应用程序。我已经使用名称空间加载了一个特定的类。当我使用composer vendor/autoload调用一个类时,我得到了“未找到类”错误。 我的composer.json文件:/var/www/html/silexapp/composer.json 我的作曲家供应商自动加载文件:/var/www/htm
我试图使用高斯,但我得到以下致命错误: 致命错误:类GuzzleHttp\ClientInterface在第13行的 /var/www/myapp/vendor/guzzlehttp/guzzle/src/functions.php中找不到 我正在使用composer autoloader自动加载: 发生了什么事? 编辑 我的composer.json: 编辑2 我的作曲家。锁 编辑3 编写器配置
我遇到了使用作曲家psr-4自动加载功能和PHPUnit的问题。问题发生在我的本地机器以及TravisCI版本上。单元测试无法找到我的类,而普通脚本可以找到。 当然,任何配置都有问题,但我无法找出我做错了什么。提前感谢你的帮助。 这是我的项目文件结构: 公共/ src/ http/ urlhelper。php 小黑 超文本传输协议/ urlhelper.test.php 这是我的作曲家的作品。js
问题内容: 当Java编译器将原语自动包装到包装类时,它在幕后生成什么代码?我想象它调用: 包装器上的valueOf()方法 包装器的构造函数 还有其他魔术吗? 问题答案: 您可以使用该工具亲自查看。编译以下代码: 编译和反汇编: 输出为: 因此,如您所见,自动装箱将调用static方法,而自动拆箱将在给定对象上调用。没什么,真的- 只是语法糖。
我正在开发一个使用Monolog的项目,需要Psr/log。当我通过自动加载使用Monolog时,它会抱怨缺少Psr\Log\LoggerInterface。所以我查看作曲家生成的autoload_namespaces.php,我找不到注册的Psr。 这是我的供应商/autoload_namespaces.php的内容 作曲家是否应该为composer.json文件中定义了{autoload}的所