Я установил библиотеку обертки 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');
Вы пытались использовать пространство имен \ Swader \ Diffbot; 'вместо' namespace Swader \ Diffbot; '? EDIT: nm Я видел ваше редактирование .. – john