php – 使用没有命名空间的类与Yii2

前端之家收集整理的这篇文章主要介绍了php – 使用没有命名空间的类与Yii2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用Yii2使用 Checkout SDK,但是由于这个库不支持PSR-4标准(命名空间),所以我无法集成它.我如何使用这个图书馆作为我的目的?

编辑

如我所说,我试图用类作为

$sale = new \Twocheckout_Sale();

但是我仍然无法使其工作.

当类没有命名空间时,这意味着它在根命名空间中.

选项1:

use Twocheckout;

...

Twocheckout::format('json');

选项二:

\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的正式文件中阅读提示,根据具体的库可以使用更多的选项.

猜你在找的PHP相关文章