Ответ 1
Если класс не имеет пространства имен, это означает его в корневом пространстве имен.
Вариант 1:
use Twocheckout;
...
Twocheckout::format('json');
Вариант 2:
\Twocheckout::format('json');
Например, PHPExcel расширение также не имеет пространств имен, аналогичный вопрос ответил на официальный форум.
Похожие вопросы:
Импортировать класс без пространства имен в класс с расширением имен
Как использовать "root" пространство имен php?
Официальная документация по PHP:
http://php.net/manual/en/language.namespaces.fallback.php
Update:
Но PHPExcel
имеет собственный автозагрузчик, а 2Checkout
- нет. Все классы включены, если требуется один основной абстрактный класс. Он даже упоминается в официальном readme:
require_once("/path/to/2checkout-php/lib/Twocheckout.php");
Поэтому вам нужно вручную включить его перед использованием классов библиотеки. Это можно сделать с помощью псевдонима, чтобы избежать написания полного пути.
use Yii;
...
$path = Yii::getAlias("@vendor/2checkout/2checkout-php/lib/Twocheckout.php");
require_once($path);
$sale = new \Twocheckout_Sale();
Для использования в одном месте это нормально, но если он будет использоваться во многих местах приложения, лучше потребовать его в записи script index.php
:
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/2checkout/2checkout-php/lib/Twocheckout.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');
Я также рекомендую прочитать советы в официальном документе о с помощью загруженных библиотек, есть больше возможностей, которые вы можете использовать в зависимости от конкретной библиотеки.