我试图从Joomla的ChronoForms v5表单调用OmniPay! 3运行PHP 5,6。我已经取得了一些进展,但遇到了路径和名称空间的问题,可以使用一些帮助。
经过一番努力,我在Composer的/ components / com_chronoforms5 / extras / omnipay /文件夹中安装了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 =行给出了一个致命错误:致命错误:Class&#39; Omnipay \ Omnipay&#39;找不到
另一个复杂因素是代码正在另一个NameSpace中执行:&#39; GCore&#39;。我尝试了各种前缀斜杠的组合,到目前为止没有成功,例如use \Omnipay\Omnipay
我现在正处于对Composer和NameSpaces知之甚少的问题上。任何建议将不胜感激。