我是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
存储库
你可能有required
oauth2 facebook和oauth2 google,或者你的其他所需软件包需要它。它很少只是添加自己。:)