gpt4 book ai didi

cakephp - Paypal SDK类名冲突

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:35 25 4
gpt4 key购买 nike

我想在我的 CakePHP 2.4.x 应用程序中使用 Paypal Adaptive Payments 和 Paypal Adaptive Accounts 库。我正在通过 Composer 加载它们。我的 composer.json 文件如下所示:

{
"require": {
"paypal/adaptivepayments-sdk-php":"v3.6.106",
"paypal/adaptiveaccounts-sdk-php":"v3.6.106"
},
"config": {
"vendor-dir": "Vendor"
}
}

两个库都包含 Paypal/Types/Common/RequestEnvelope.php 并且每个库都不同。我遇到了与未使用正确名称的此类名称的冲突。我相信解决方案是在我的 composer.json 中使用自动加载。我已经阅读了文档,但不相信我没有正确使用它。这是我正在尝试的:

{
"require": {
"paypal/adaptivepayments-sdk-php":"v3.6.106",
"paypal/adaptiveaccounts-sdk-php":"v3.6.106"
},
"config": {
"vendor-dir": "Vendor"
},
"autoload": {
"psr-4": {
"AdaptivePaymentsLib\\": "Vendor/paypal/adaptivepayments-sdk-php/lib",
"AdaptiveAccountsLib\\": "Vendor/paypal/adaptiveaccounts-sdk-php/lib"
}
}
}

在我的 Controller 中,我试图像这样调用 RequestEnvelope:

$requestEnvelope = new AdaptivePaymentsLib\PayPal\Types\Common\RequestEnvelope("en_US");

没有找到。事件帐户最近才添加到项目中。以前使用 $requestEnvelope = new PayPal\Types\Common\RequestEnvelope("en_US"); 获取请求信封效果很好;所以只是添加了出现冲突并导致损坏的帐户。

最佳答案

你不应该为你的依赖定义自动加载——这是他们要解决的任务。

如果您查看 paypal/adaptivepayments-sdk-php 的 composer.json 文件,您会看到:

"autoload": {
"psr-0": {
"PayPal\\Service": "lib/",
"PayPal\\Types": "lib/"
}
}

如果您查看 paypal/adaptiveaccounts-sdk-php 中的同一个文件,您会看到:

"autoload": {
"psr-0": {
"PayPal\\Service": "lib/",
"PayPal\\Types": "lib/"
}
}

安装后,Composer 创建一个文件vendor/composer/autoload_namespaces.php,内容如下:

return array(
'PayPal\\Types' => array($vendorDir . '/paypal/adaptivepayments-sdk-php/lib', $vendorDir . '/paypal/adaptiveaccounts-sdk-php/lib'),
'PayPal\\Service' => array($vendorDir . '/paypal/adaptivepayments-sdk-php/lib', $vendorDir . '/paypal/adaptiveaccounts-sdk-php/lib'),
'PayPal' => array($vendorDir . '/paypal/sdk-core-php/lib'),
);

所以这两个库都包含在这里,我相信自动加载会起作用。

对于具有不同内容的重复类,您真的无法采取任何措施。你在 Github 上开了一个问题吗?如果不让开发团队意识到这个问题,它永远不会得到解决。

作为 hack,您可以定义一个安装后和更新后脚本来删除其中一个文件。参见 the composer documentation更多细节。 Composer 接受任何 shell 命令或对 PHP 类的静态调用。我会在这里使用 shell 命令。

关于cakephp - Paypal SDK类名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com