如何在不遵循 PSR-0 或 PSR-4 的作曲家中自动加载存储库?

How to autoload a repository in composer which does not follow PSR-0 or PSR-4?

所以,我正在尝试使用 jcleblanc/reddit-php-sdk,但它不遵循任何标准,也没有可用的存储库,所以我不得不在我的 composer.json 中自己手动定义它文件:

"repositories" : [{
    "type": "package",
    "package": {
        "name": "jcleblanc/reddit-php-sdk",
        "version": "dev-master",
        "source": {
            "url": "https://github.com/jcleblanc/reddit-php-sdk",
            "type": "git",
            "reference": "origin/master"
        },
        "autoload": {
            "classmap": ["reddit-php-sdk/", "/", "reddit.php", "config.php"]
        }
    }
}],

此处vendor/中的目录结构:

然而,当我 运行 composer dump-autoload 时,这个项目中的 类 没有自动加载,也没有出现在任何 autoload_*.php 作曲家文件中.这意味着我当然会在尝试使用它时遇到 "Class 'reddit' not found" 错误。

解决方案?

您可以使用 Composer 的 file autoloading.

{
"autoload": {
    "files": ["src/MyLibrary/functions.php"]
    }
}

然而,这更适合辅助函数文件,我还没有用 Class 文件尝试过(尽管没有理由它不应该工作)。

最后我自己 fork 了这个项目,但原来的项目还是坏了。