当类没有命名空间时,意味着它在根命名空间中。
选项 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
更新:
但是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 的提示,根据具体的库,您可以使用更多选项。