2013-06-19 88 views
0

我試圖使用https://github.com/php-loep/oauth2-client作爲oauth 2.0 libary。如何加載使用composer的庫?

它有依賴需要使用作曲家安裝。

我試圖按照手冊和一切似乎很好,但我只是無法讓它工作!

我將存儲庫克隆到一個文件夾,我下載了composer並安裝了依賴關係。 這生成了一個獨特的自動載入文件。

現在,我的理解是,我只需要這個自動載入文件,應該很好去。這就是我所做的,但是它無法解析我需要加載的類的類名。在我而言,這將是\OAuth2\Client\Provider\Facebook

庫的使用記錄在這裏:https://github.com/php-loep/oauth2-client/blob/master/README.md

爲了確保我沒有給出模棱兩可的信息,我創造了這個短小的shell腳本(腳本不要說謊!),它再現我採取的步驟。如果我在一個空文件夾中運行它,然後運行命令行或Web瀏覽器中創建的文件foo.php,我得到的錯誤PHP Fatal error: Class 'OAuth2\Client\Provider\Facebook' 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 \OAuth2\Client\Provider\Facebook(array()); " > foo.php 

我做了什麼錯?我誤解了作曲家的概念嗎?如果是這樣,請賜教!

我也嘗試將文件foo.php移動到文件夾oauth2-client,這沒有改變。

我正在運行php 5.3和__DIR__常量也可用。

回答

1

在您的foo.php,錯誤的命名空間用於Facebook類。您錯過了這部分內容:\League

oauth2-client/src/League/OAuth2/Client/Provider/Facebook.php:

namespace League\OAuth2\Client\Provider; 

class Facebook extends IdentityProvider 
{ 
+0

來包含它,有時答案會隱藏在平面視域中.-謝謝。通往地獄的道路上覆蓋着複製和粘貼的印版:P –

1

似乎它可能與名稱空間有關。如果您運行的是PHP 5.2,則會遇到問題,因爲在PHP 5.3之前不支持名稱空間:(

無論如何,要解決該問題,您需要進入一些作曲文件並更改一些內容。我的頭,我不得不編輯autoload_real.php包括的類加載器和更換DIR與目錄名(FILE)。不知道這是最好的方式,但我得到了它做這方面的工作。

+0

謝謝! +1我正在運行PHP 5.3。 '__DIR__'常量也可用。 「包含類加載器」是什麼意思?我是否正確地解釋了你的回答,因爲我對作曲家的使用基本正確? –

+0

哦,如果你正在運行5.3,那麼我的回答沒有多大幫助!我只是想用include()或require() –

相關問題