为了账号安全,请及时绑定邮箱和手机立即绑定

无法从其他命名空间加载供应商类

无法从其他命名空间加载供应商类

PHP
莫回无 2021-10-22 14:13:30
我很难在 PHP 中环绕命名空间,尤其是当您的代码需要与驻留在另一个命名空间中的脚本进行交互时。我下载了一个 Shopify API 工具包并试图让它工作。在我开始向我的代码添加命名空间之前,一切都很好(这是必需的,或者与我网站上的其他 Wordpress 插件发生脚本冲突)。此外,顶部奇怪的命名空间 {} 位是因为在同一个文件中我想要一个全局可访问的函数来使类成为单例。期待更多地了解这是如何工作的。#### FILE BEING CALLEDnamespace {    function SomeFunctionToBeAccessedGlobally() {        return 'Hello';    }}namespace MySpecialApp {    class ShopifyImport {        public function __construct() {            // Do Whatever            $this->doImport();        }        public function doImport() {            require __DIR__ . '/vendor/autoload.php';            $credential     = new Shopify\PrivateAppCredential('standard_api_key', 'secret_api_key', 'shared_api_key');            $client         = new Shopify\Client($credential, 'shop_url', [ 'metaCacheDir' => './tmp' ]);        }    }}#### FILE '/vendor/autoload.php'require_once __DIR__ . '/composer/autoload_real.php';return ComposerAutoloaderInit73503f8de5d68cdd40a9c0dfd8a25b44::getLoader();我确实注意到部分存储库克隆到的某些文件vendor具有namespace Slince\Shopify;声明。我试图use在我的原始命名空间中使用该命名空间,但它也不起作用。报告的 PHP 错误是:致命错误:未捕获的错误:在 /.../ShopifyImporter.php:139 中找不到类“MySpecialApp\Shopify\PrivateAppCredential”堆栈跟踪:#0(Blah Blah Blah)
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您的代码尝试Shopify\PrivateAppCredential()在当前命名空间中创建一个新对象。但是,此类在您的命名空间中不存在,因为它是“供应商”命名空间的一部分。

您可以通过\在它们前面添加一个来“重置”(读取回退)到对象创建的全局命名空间,如文档中所述:

$credential = new \Shopify\PrivateAppCredential('standard_api_key', 'secret_api_key', 'shared_api_key');

您可以在此处查看不带\\的差异。


查看完整回答
反对 回复 2021-10-22
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信