我是composer的新手,我用它安装了oauth2-client。我想我对这应该是如何工作的有一些误解。
在我使用composer require league/oauth2-client从命令行安装的thephpleague页面上
这会将文件添加到/usr/local/bin/供应商/联盟/OAuth2-client。文件结构看起来和github上的一样,只是我没有完全相同的文件。
文件中的php正在查找\ And \OAuth2中的文件,所以我收到错误消息,它找不到包含的文件,因为我没有这个目录。
我做错了吗,或者我只是没有得到什么?
发布于 2017-01-28 06:12:07
反斜杠是PHP名称空间分隔符,而不是目录分隔符。
在来自TheLeague的oauth2的composer.json中,这是autoload指令:
"autoload": {
"psr-4": {
"League\\OAuth2\\Client\\": "src/"
}
},它说明src目录中的代码位于League\OAuth2\Client名称空间中。
Composer在命名空间和自动加载方面遵循PSR-4,所以如果你想知道发生了什么,请查看它。
更新:如果你已经安装了其他的联盟扩展,比如oauth2-facebook,它会自动安装到相同的src目录下--因为composer.json中的autoload指令。
为什么?
由于名称空间的原因,您将在League\OAuth2\Client\Provider名称空间中找到“Facebook”。
由于PSR-4,这意味着它们需要进入相同的目录,即使它们是不同的包。
这就是为什么你会在src/Providers目录中看到Facebook.php的原因。检查oauth2-facebook repository
您可能有required oauth2-facebook和oauth2-google,或者您的其他必需的包之一需要它。它很少只添加它们自己。:)
https://stackoverflow.com/questions/41903727
复制相似问题