Когда класс не имеет пространства имен, это означает, что оно находится в корневом пространстве имен.
Вариант 1:
use Twocheckout;
...
Twocheckout::format('json');
Вариант 2:
\Twocheckout::format('json');
Например, PHPExcel расширение также не имеет пространства имен, подобный вопрос был дан на official forum.
Похожие вопросы:
Importing class without namespace to namespaced class
How to use "root" namespace of 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();
Для использования в одном месте, это нормально, но если она будет использоваться во многих местах применения, то лучше требовать его ввода сценария 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');
Я также рекомендую прочитать советы в официальном документе около using downloaded libraries есть больше вариантов, которые вы можете использовать в зависимости от конкретной библиотеки.
И какая ошибка? – arogachev
класс @arogachev не найден, и когда я пытаюсь включить его вручную, он говорит, что не может его обновить. – alwaysLearn
Убедитесь, что у вас установлено расширение, и файлы существуют в папке поставщика. – arogachev