1

我正在尝试从 Joomla 中的 ChronoForms v5 表单中调用 OmniPay!3 运行 PHP 5,6。我已经取得了一些进展,但在路径和命名空间方面遇到了问题,可以使用一些帮助。

经过一番挣扎,我从 Composer 安装了 OmniPay,位于文件夹 /components/com_chronoforms5/extras/omnipay/ 中,我想使用如下代码从 ChronoForm 中的自定义代码操作调用 SecurePay 路径:

<?php
require (JPATH_SITE.'/components/com_chronoforms5/extras/omnipay/vendor/autoload.php');
use Omnipay\Omnipay;
$gateway = Omnipay::create('SecurePay');
?>

这部分有效,但给了我一个 Class not found 错误。我进一步挖掘,发现 Composer autoload_classmap.php 文件生成的文件夹路径不正确,缺少上面显示的 /vendor/ 文件夹。

更改 autoload_classmap.php 文件以添加它似乎会在返回的数组中创建正确的路径。(虽然我怀疑数组不完整。)这是我所做的更改:

$vendorDir = dirname(dirname(__FILE__));
// $baseDir = dirname($vendorDir); // << replace this line
$baseDir = $vendorDir; // << with this

通过这些更改,ClassLoader 对象似乎具有有效路径,例如

[Omnipay\SecurePay\] => Array ( 
  [0] => /home/ . . ./components/com_chronoforms5/extras/omnipay/vendor/omnipay/securepay/src
) 

但是我调用网关的代码仍然给我一个来自上面第一个代码片段的 $gateway = 行的致命错误:致命错误:找不到类 'Omnipay\Omnipay'

代码在另一个命名空间中执行还有一个额外的复杂性:'GCore'。我已经尝试过各种前缀斜杠组合,到目前为止没有成功,例如use \Omnipay\Omnipay

我现在对 Composer 和 NameSpaces 非常有限的知识已经用完了。任何建议,将不胜感激。

4

0 回答 0