使用 composer 加载 git 存储库 - 自动加载问题

Load git repo with composer - autoloading issue

我有一个 github 存储库 https://github.com/KoulSlou/UPS,我想将它添加到我的项目中。

在项目根目录中,我创建了 composer.json 文件并定义了以下自动加载属性:

{
    "autoload": {
        "files": [
            "libraries/Ups/Ups.php",
            "libraries/Ups/Ups_Base.php",
            "libraries/Ups/Ups_Base_Response.php",
            "libraries/Ups/Ups_Live_Rates.php"
        ]
    }
}

当我运行

php composer.phar install 

正在下载存储库,但自动加载器似乎无法正常工作。当我尝试初始化 类

之一时
$test = new Ups()

我收到以下错误:

Fatal error: Class 'Ups' not found in application/....

我是不是定义错了"autoload"属性?

我建议不要使用 "files" 自动加载器,因为它不是很自动 - 这里提到的文件总是包含在内。换成 "classmap" 会更好。然后你不需要提及所有文件,但你可以简单地说明你想要扫描的目录 类.

现在我在任何地方都看不到:您是否在任何地方初始化了 Composer 的自动加载器?这通常类似于

require "vendor/autoload.php";

终于找到问题所在了。我尝试加载的项目中的 composer.json 文件 - UPS library - 无效。 运行:

时我可以下载文件
composer.phar install

但似乎 composer.json 文件被忽略了。我在 运行

时发现了它
composer.phar update

得到了

No valid composer.json was found

使用选项 -v 我得到错误 "name" 是未定义的索引。所以,我只是将 "name" 字段添加到 composer.json。最终版本是:

{
    "name":"KoulSlou/UPS",
    "autoload": {
        "files": [
            "libraries/Ups/Ups.php",
            "libraries/Ups/Ups_Base.php",
            "libraries/Ups/Ups_Base_Response.php",
            "libraries/Ups/Ups_Live_Rates.php"
         ]
    }
}