为什么composer使用不同的目录名和文件安装oauth2-client

时间:2017-01-27 22:00:35

标签: composer-php

我是作曲家的新手,我用它来安装oauth2-client。我想我对这应该如何运作有一些误解。

从我从命令行安装的phpleague github页面中使用 $data = json_decode(file_get_contents("http://api.vateud.net/notams/EPDE.json")); foreach ($data as $obj) { echo nl2br($obj->raw); }

将此文件添加到/ usr / local / bin / vendor / league / oauth2-client。 文件结构与github上的文件结构相同,但我没有所有相同的文件。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

它表示src目录中的代码位于League\OAuth2\Client名称空间中。

作曲家在命名空间和自动加载方面遵循PSR-4,所以如果你想知道发生了什么,请检查一下。

更新: 如果您已经安装了其他联盟扩展程序,例如oauth2-facebook,它会将自己安装到同一个src目录中 - 因为composer.json中的自动加载指令。

为什么?
好吧,由于命名空间,你会在League\OAuth2\Client\Provider命名空间中找到“Facebook” 由于PSR-4,这意味着他们需要进入同一目录,即使它们是不同的包。

这就是为什么你会在Facebook.php目录中看到src/Providers的原因。查看oauth2-facebook repository

你可能有required oauth2-facebook和oauth2-google,或者你需要的其他一个包需要它。它很少只是自我添加。 :)