Использование классов без пространства имен с Yii2

Я хочу использовать проверка SDK С Yii2, но поскольку эта библиотека не поддерживает стандарты PSR-4 (пространства имен), у меня возникли проблемы с его интеграцией. Как я могу использовать эту библиотеку для своих целей?

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

как было предложено, я попытался использовать класс как

$sale = new Twocheckout_Sale();

но все равно я не могу заставить его работать.

2 ответов


когда класс не имеет пространства имен, это означает, что в корневом пространстве имен.

Вариант 1:

use Twocheckout;

...

Twocheckout::format('json');

Вариант 2:

\Twocheckout::format('json');

например, PHPExcel расширение также не имеет пространств имен, на аналогичный вопрос был дан ответ на официальный форум.

вопросы:

импорт класса без пространства имен в пространстве имен класс!--20-->

как использовать пространство имен "root" php?

официальная документация PHP:

http://php.net/manual/en/language.namespaces.fallback.php

обновление:

но 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');

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


/* Try this  */
public function actionTest(){
    //package
    require(Yii::getAlias('@vendor')."/Excel/Spreadsheet_Excel_Reader.php");

    $exldata = new \Spreadsheet_Excel_Reader();


}