如何加载使用composer的库



我正在尝试使用https://github.com/php-loep/oauth2-client作为oauth 2.0库。

它有需要使用composer安装的依赖项。

我试着按照手册,一切似乎都很好,但我就是无法让它工作!

我将存储库克隆到一个文件夹中,在那里我下载了composer并安装了依赖项。这将生成一个唯一的自动加载文件。

现在这是我的理解,我只需要需要这个自动加载文件,应该很好去。这就是我所做的,但是它不能解析我需要加载的类的类名。这里是OAuth2ClientProviderFacebook

这个库的用法在这里有说明:https://github.com/php-loep/oauth2-client/blob/master/README.md

为了确保我没有给出模棱两可的信息,我创建了这个简短的shell脚本(脚本不会说谎!),它再现了我所采取的步骤。如果我在一个空文件夹中运行它,然后从命令行或web浏览器运行创建的文件foo.php,我得到错误PHP Fatal error: Class 'OAuth2ClientProviderFacebook' not found in /var/www/test/foo.php on line 1

脚本如下:

git clone https://github.com/php-loep/oauth2-client.git
cd oauth2-client
curl -sS https://getcomposer.org/installer | php
php composer.phar install
cd ..
echo "<?php ini_set('display_errors',1); require_once 'oauth2-client/vendor/autoload.php'; $provider = new OAuth2ClientProviderFacebook(array()); " > foo.php

我做错了什么?我是否误解了作曲家的概念?如果有,请给我点化一下!

我还尝试将文件foo.php移动到文件夹oauth2-client中,这没有改变任何东西。

我正在运行php 5.3和__DIR__常数也可用。

在foo.php中,为Facebook类使用了错误的命名空间。您错过了这部分:League .

oauth2-client/src/联盟/OAuth2/客户/供应商/Facebook.php:

namespace LeagueOAuth2ClientProvider;
class Facebook extends IdentityProvider
{

似乎与名称空间有关。如果您运行的是PHP 5.2,您将遇到问题,因为在PHP 5.3之前不支持名称空间:(

无论如何,要解决这个问题,你需要进入一些作曲家的文件,并改变一些事情。在我的脑海中,我不得不编辑autoload_real.php来包含类加载器,并将DIR替换为dirname(FILE)。不确定这是否是最好的方法,但我通过这样做使它工作

相关内容

  • 没有找到相关文章