为什么composer安装了具有不同目录名和文件的oauth2客户端



我是composer的新手,我用它来安装oauth2客户端。我想我对这应该如何运作有某种误解。

在hpleague github页面中,我使用composer require league/oauth2-client

这将文件添加到/usr/local/bin/vendor/legal/oauth2客户端。文件结构看起来和github上的一样,只是我没有所有相同的文件。

文件中的php正在\League \OAuth2中查找文件,所以我收到错误,它找不到包含的文件,因为我没有那个目录。

是我做错了,还是我只是没有得到什么?

反斜杠是PHP命名空间分隔符,而不是目录分隔符。

在TheLeague的oauth2的composer.json中,这是autoload指令:

"autoload": {
"psr-4": {
"League\OAuth2\Client\": "src/"
}
},

它表示src目录中的代码位于LeagueOAuth2Client命名空间中。

Composer遵循PSR-4关于名称空间和自动加载,所以如果你想知道发生了什么,请查看它

更新:如果您安装了其他League扩展,如oauth2-facebook,它会将自己安装到同一个src目录中,因为composer.json中有autoload指令。

为什么
好吧,由于名称空间的原因,您将在LeagueOAuth2ClientProvider名称空间中找到"Facebook">
由于PSR-4,这意味着它们需要进入同一目录,即使它们是不同的包。

这就是为什么您会在src/Providers目录中看到Facebook.php的原因。检查oauth2-facebook存储库

你可能有requiredoauth2 facebook和oauth2 google,或者你的其他所需软件包需要它。它很少只是添加自己。:)

相关内容

  • 没有找到相关文章

最新更新