Composer不更新 autoload_namespaces.php 文件,尽管下载包正常。无法理解我在哪里犯了错误。 如果我从packagist加载一些东西,名称空间文件成功更新。
项目结构
Main Composer.json
{
"repositories":[
{
"type": "package",
"package": {
"name": "test/framework",
"version": "1.0.0.1",
"dist": {
"url": "http://localhost/repo/1.zip",
"type": "zip"
}
}
}
],
"require": {
"test/framework": "*"
}
}
包composer.json
{
"name": "test/framework",
"type": "library",
"require": {
"php": ">=5.2.4"
},
"autoload": {
"psr-0" : {
"Test" : "lib/"
}
}
}
autoload_namespaces.php
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
答案 0 :(得分:2)
您正在通过zip下载存储库中定义的包。
https://getcomposer.org/doc/05-repositories.md#package-2
在这种情况下,我觉得你应该在同一个地方定义包定义。有关包含自动加载定义的示例,请参阅上面的链接。
{
"repositories":[
{
"type": "package",
"package": {
"name": "test/framework",
"version": "1.0.0.1",
"dist": {
"url": "http://localhost/repo/1.zip",
"type": "zip"
},
"autoload": {
"psr-4" : {
"Test\\": "lib"
}
}
}
}
],
"require": {
"test/framework": "*"
}
}
您还可以尝试一些变体,请参阅http://harikt.com/blog/2014/05/29/hidden-gems-of-composer/
上的帖子PS:psr-4是自动加载psr-0结构化类的推荐方法。见https://getcomposer.org/doc/04-schema.md#autoload
答案 1 :(得分:2)
只是为了添加Hari KT所说的内容,请确保在更新composer.json文件后删除vendor目录,因为composer使用./vendor/composer目录中的installed.json文件生成自动加载php文件。
我已经正确设置了composer.json,但没有删除现有的供应商目录,所以我认为Hari K T提供的答案没有用。