基于这个答案:Omnipay how to add new gateway
我尝试为omnipay添加新网关。
我的文件夹结构:
lib/omnipay/newgw/
lib/omnipay/newgw/src/
lib/omnipay/newgw/src/Gateway.php
lib/omnipay/newgw/composer.json
vendor/omnipay/...
...
composer.json
在main composer.json中,我有:
{
"require": {
...
"omnipay/omnipay": "dev-master"
...
},
"autoload": {
"psr-0": {
"": "lib/",
"Omnipay\\NewGw\\" : "lib/omnipay"
}
}
}
做作曲家更新。
在gateway.php中:
namespace Omnipay\NewGw;
use Omnipay\Common;
use Omnipay\Common\AbstractGateway;
use Omnipay\NewGw\Message\PurchaseRequest;
use Omnipay\NewGw\Message\RefundRequest;
class Gateway extends AbstractGateway{
}
当我尝试运行它时:
use Omnipay\Omnipay;
class TestController extends ControllerBase{
public function index(){
$gateway = Omnipay::create('NewGw');
}
}
它说找不到这个班级:
Omnipay\Common\Exception\RuntimeException: Class '\Omnipay\NewGw\Gateway' not found
我不明白为什么没有加载类。 请帮忙,谢谢。
答案 0 :(得分:1)
我自己刚刚创建了一个新的Gateway,我相信你的问题就是你正在做的事情
"psr-0": {
"": "lib/",
"Omnipay\\NewGw\\" : "lib/omnipay"
}
它应该是
"Omnipay\\NewGw\\" : "lib/omnipay/src"
您正在将新库的命名空间设置为lib / omnypay,但它实际上应该是lib / omnypay / src