composer不会将文件添加到自动加载

时间:2016-02-20 08:48:32

标签: composer-php

在作曲家项目中,我必须添加一个库,它没有composer.json并且不使用名称空间。因此,我调整了我的项目composer.json以添加库:

{
    [...]
    "type": "project",
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "interpid/tfpdf-table",
                "version": "5.1.0",
                "dist": {
                    "url": "contrib/tfpdf_table_5.1.0.zip",
                    "type": "zip"
                },
                "autoload": {
                    "classmap": ["", "classes/", "classes/Pdf/", "classes/Pdf/String/", "classes/Pdf/Table/Cell/", "font/"],
                    "files": ["tfpdf.php", "classes/pdftable.php"]
                }
            }
        }
    ],
    "require": {
        [...]
        "interpid/tfpdf-table": "5.1.*"
    }
    [...]
}

composer update上解压缩zip文件并按预期/配置存储在目录vendor/interpid/tfpdf-table中。但PHP文件/类未添加到classmapfiles配置定义的自动加载文件中。 composer dump-autoload也无济于事。

1 个答案:

答案 0 :(得分:0)

正如您所指出的那样,zip被提取到vendor/interpid/tfpdf-table,而不是vendor/interpid,这意味着额外的根文件夹是zip的一部分。作曲家不能神奇地猜测,它只是从根包文件夹解析,所以vendor/interpid。因此,您必须使用tfpdf-table/为所有自动加载器定义添加前缀。

如果您想发现此类问题,请使用composer update标记运行-vvv