I want to use Checkout SDK with Yii2 but since this library does not support PSR-4 standards (namespaces) I am having trouble to integrate it. How can I use this library for my purpose?
EDIT
As suggested I tried to use class as
$sale = new \Twocheckout_Sale();
but still I am unable to make it work.
When the class does not have namespace it means it's in the root namespace.
Option 1:
use Twocheckout;
...
Twocheckout::format('json');
Option 2:
\Twocheckout::format('json');
For example, PHPExcel extension also doesn't have namespaces, similar question was answered on official forum.
Related questions:
Importing class without namespace to namespaced class
How to use "root" namespace of php?
Official PHP documentation:
http://php.net/manual/en/language.namespaces.fallback.php
Update:
But PHPExcel
has own autoloader, while 2Checkout
does not. All classes are included by requiring one main abstract class. It's even mentioned in official readme:
require_once("/path/to/2checkout-php/lib/Twocheckout.php");
So you need to manually include it before using library classes. It can be done with help of alias to avoid writing full path.
use Yii;
...
$path = Yii::getAlias("@vendor/2checkout/2checkout-php/lib/Twocheckout.php");
require_once($path);
$sale = new \Twocheckout_Sale();
For usage in one place it's OK, but if it will be used in many places of application, it's better to require it in entry 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');
I also recommend to read tips in official documentatiton about using downloaded libraries, there are more options you can use depending on the specific library.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With