2015-07-09 2 views
9

Я установил библиотеку обертки PHP, используя Composer. Автозагрузчик, похоже, работает нормально, но я не могу назвать класс, так как он говоритНе удается вызвать класс, установленный с помощью Composer

класс 'Diffbot' не найден.

Я пробовал множество трюков, особенно упомянутых в документации к Composer, но я не могу заставить их работать, и я думаю, что я должен поделиться своей проблемой здесь.

Мой composer.json содержит следующие строки

{ 
    "require": { 
     "swader/diffbot-php-client": "^0.4.4" 
    } 

} 
Directory structure 

Vendor 
---composer 
---guzzlehttp 
---react 
---swader 
---autoload.php 

'swader' folder 
---diffbot-php-client 
    ---src 
     ---Abstracts 
     ---Api 
     ---Entity 
     ---Exceptions 
     ---Factory 
     ---Interfaces 
     ---Traits 
     ---Diffbot.php 

Я пытаюсь вызвать класс Diffbot под Diffbot.php, он содержит следующие пространства имен:

namespace Swader\Diffbot; 

use Swader\Diffbot\Api\Crawl; 
use Swader\Diffbot\Api\Custom; 
use Swader\Diffbot\Api\Search; 
use Swader\Diffbot\Exceptions\DiffbotException; 
use Swader\Diffbot\Api\Product; 
use Swader\Diffbot\Api\Image; 
use Swader\Diffbot\Api\Analyze; 
use Swader\Diffbot\Api\Article; 
use Swader\Diffbot\Api\Discussion; 
use GuzzleHttp\Client; 
use Swader\Diffbot\Factory\Entity; 
use Swader\Diffbot\Interfaces\Api; 
use Swader\Diffbot\Interfaces\EntityFactory; 

/** 
* Class Diffbot 
* 
* The main class for API consumption 
* 
* @package Swader\Diffbot 
*/ 
class Diffbot 
{ 
    /** @var string The API access token */ 
    protected static $token = null; 

autoload_psr4.php файл под composer/ папке:

// autoload_psr4.php @generated by Composer 

$vendorDir = dirname(dirname(__FILE__)); 
$baseDir = dirname($vendorDir); 

return array(
    'Swader\\Diffbot\\' => array($vendorDir . '/swader/diffbot-php-client/src'), 
    'React\\Promise\\' => array($vendorDir . '/react/promise/src'), 
    'GuzzleHttp\\Stream\\' => array($vendorDir . '/guzzlehttp/streams/src'), 
    'GuzzleHttp\\Ring\\' => array($vendorDir . '/guzzlehttp/ringphp/src'), 
    'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 
); 

Я пытаюсь вызвать Diffbot класс из сценария PHP, который находится в том же каталоге, что и vendor/ папку следующим образом:

require_once ('vendor/autoload.php'); 
error_reporting(E_ALL); 
$diffbot = new Diffbot(); 

Редактировать

Я решить мою проблему. Я просто добавил следующие строки. Я был смущен пространством имен PHP.

require_once __DIR__.'/vendor/autoload.php'; 
$foo = new \Swader\Diffbot\Diffbot('foo'); 
+0

Вы пытались использовать пространство имен \ Swader \ Diffbot; 'вместо' namespace Swader \ Diffbot; '? EDIT: nm Я видел ваше редактирование .. – john

ответ

3

Попробуйте

require_once __DIR__.'/vendor/autoload.php'; 
use Swader\Diffbot\Diffbot; 
$diffbot = new Diffbot(); 

См PHP doc for reference.