如何在不遵循 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 了这个项目,但原来的项目还是坏了。
所以,我正在尝试使用 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 了这个项目,但原来的项目还是坏了。