加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:30:45 所属栏目:PHP教程 来源:网络整理
导读:我想用Yii2使用 Checkout SDK,但是由于这个库不支持PSR-4标准(命名空间),所以我无法集成它.我如何使用这个图书馆作为我的目的? 编辑 如我所说,我试图用类作为 $sale = new Twocheckout_Sale(); 但是我仍然无法使其工作. 当类没有命名空间时,这意味着它在根
我想用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的正式文件中阅读提示,根据具体的库可以使用更多的选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读