wirecardBrasil/moip-sdk-php

autoload manual

Closed this issue · 7 comments

Como faço um load manual das classes sem usar o autoload/composer?

O sdk php do Moip foi instalado corretamente com o composer. Porém, estou tentando implementar o moip-php-sdk junto com uma api utilizando o slim framework e ao chamar a classe em alguma função do routes.php ele acusa que a mesma não existe:

meu arquivo index.php do slim (exemplo simplificado):

require 'vendor/autoload.php';
$settings = require 'settings.php';
$app = new \Slim\App($settings);
include 'db.php';
use Moip\Moip;
use Moip\MoipBasicAuth;
include 'routes.php';
$app->run();

Parte da função do meu arquivo routes.php (exemplo simplificado):

$app->post('/pay/product', function ($request, $response) {

    $token = '01010101010101010101010101010101';
    $key = 'ABABABABABABABABABABABABABABABABABABABAB';

    $moip = new Moip(new MoipBasicAuth($token, $key), Moip::ENDPOINT_SANDBOX);

Erro mostrado no log:

[Tue May 02 22:47:45.284613 2017] [:error] [pid 4264] PHP Fatal error: Class 'Moip' not found in /var/www/html/api/v1/routes.php on line 3542

Olá @czmarcos, bom dia!
Tudo bem com você?

Qual a versão do sdk que está no seu composer?

Opa, blz @SOSTheBlack !

Versão v 1.1.2

@czmarcos aqui está funcionando normal.
Se você instancia a Moip class antes do $app->run() funciona?

Acabei de rodas os testes unitário e também passou todos

Solved!
Instanciei a classe Moip direto no arquivo routes.php e deu certo!
@SOSTheBlack valeu pela ajuda!

@czmarcos você tem um exemplo do seu código do routes.php, por que estou tentando integrar o sdk com o slim e estou encontrando o mesmo problema que você estava tendo.

@rukaLukas inclua as classes do moip direto no topo do seu arquivo do routes.php

use Moip\Moip;
use Moip\Auth\BasicAuth;

dai vc consegue usar nas suas endpoints, ex:

$app->post('/add/pagamento', function ($request, $response) {
$moip = new Moip(new BasicAuth($token, $key), Moip::ENDPOINT_PRODUCTION);

...

}