Omnipay добавить новый шлюз

На основе этого ответа: Omnipay, как добавить новый шлюз

Пытаюсь добавить новый шлюз для omnipay.

Моя структура папок:

lib/omnipay/newgw/
lib/omnipay/newgw/src/
lib/omnipay/newgw/src/Gateway.php
lib/omnipay/newgw/composer.json

vendor/omnipay/...
...
composer.json

В основном composer.json у меня есть:

{
    "require": {
        ...
        "omnipay/omnipay": "dev-master"
        ...
    },
    "autoload": {

        "psr-0": { 
            "": "lib/", 
            "Omnipay\\NewGw\\" : "lib/omnipay"
        }
    }
}

Обновите композитор.

В шлюзе.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

Я не понимаю, почему класс не загружается. Пожалуйста, помогите, спасибо.


person Vlad Sergiu    schedule 03.10.2014    source источник


Ответы (1)


Я только что сам создал новый шлюз, я считаю, что ваша проблема заключается в том, что вы делаете что-то вроде

   "psr-0": { 
            "": "lib/", 
            "Omnipay\\NewGw\\" : "lib/omnipay"
        }

И это должно быть

"Omnipay\\NewGw\\" : "lib/omnipay/src"

Вы устанавливаете пространство имен новой библиотеки на lib/omnypay, но на самом деле оно должно быть lib/omnypay/src

person Mihai P.    schedule 29.10.2014