Laravel Сервис Провайдер

Раньше у меня была модифицированная версия поставщика услуг Dingo (я использую Laravel 4.2), которая прекрасно работает. Однако через некоторое время (несколько обновлений композитора) я не могу заставить его работать. Это просто не зарегистрировано. Я даже пытался положить некоторые var_dump или же echo в __construct метод, и он не имеет ничего

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

Мой app.php

'providers' => array(
....
'MyMod\Api\Provider\MainServiceProvider',
'Dingo\Api\Provider\ApiServiceProvider',
),

Мой поставщик услуг

namespace MyMod\Api\Provider;

use Illuminate\Support\ServiceProvider;
use MyMod\Api\Event\ExceptionHandler;

class MainServiceProvider extends ServiceProvider
{

/**
* Boot the service provider.
* @return void
*/
public function boot()
{
$this->app['events']->listen('router.exception', 'MyMod\Api\Event\ExceptionHandler');
}

/**
* Register bindings for the service provider.
* @return void
*/
public function register()
{
$this->app->bind('MyMod\Api\Event\ExceptionHandler', function ($app) {
return new ExceptionHandler($app['api.exception'], $app['config']->get('api::debug'));
});

}

/**
* Indicates if loading of the provider is deferred.
* @var bool
*/
protected $defer = true;

}

Мой обработчик

namespace MyMod\Api\Event;

use Exception;
use MyMod\Api\Exception\ApiException;
use Dingo\Api\Http\Response;
use Dingo\Api\Exception\Handler;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;

class ExceptionHandler
{
/**
* API exception handler instance.
* @var \Dingo\Api\Exception\Handler
*/
protected $handler;

/**
* Indicates if debug mode is enabled.
* @var bool
*/
protected $debug;

/**
* Create a new exception handler instance.
* @param \Dingo\Api\Exception\Handler $handler
* @param bool                         $debug
*/
public function __construct(Handler $handler, $debug = false)
{
$this->handler = $handler;
$this->debug = $debug;
}

/**
* Handle an exception thrown during dispatching of an API request.
* @param \Exception $exception
* @throws \Exception
* @return \Dingo\Api\Http\Response
*/
public function handle(Exception $exception)
{
if ($this->handler->willHandle($exception)) {
$response = $this->handler->handle($exception);

return Response::makeFromExisting($response);
} elseif (! $exception instanceof HttpExceptionInterface) {
throw $exception;
}

if (! $message = $exception->getMessage()) {
$message = sprintf('%d %s', $exception->getStatusCode(), Response::$statusTexts[$exception->getStatusCode()]);
}

$response = ['message' => $message, 'status_code' => $exception->getStatusCode()];

if ($exception instanceof ApiException && $exception->hasErrors()) {
$response['errors'] = $exception->getErrors();
}

if ($code = $exception->getCode()) {
$response['code'] = $code;
}

if ($this->debug) {
$response['debug'] = [
'line' => $exception->getLine(),
'file' => $exception->getFile(),
'class' => get_class($exception),
'trace' => $exception->getTraceAsString(),
];
}

return new Response($response, $exception->getStatusCode(), $exception->getHeaders());
}

/**
* Enable or disable debug mode.
* @param bool $debug
* @return void
*/
public function setDebug($debug)
{
$this->debug = $debug;
}
}

Может кто-нибудь указать мне правильное направление о том, что может пойти не так?

Изменить: я все больше и больше уверен, что это как-то связано с композитором и PSR-4

Что вы думаете о моем composer.json ниже, он работал

"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/transformer",
"app/customPackages",
"app/routes"],
},

Мой поставщик услуг и обработчик находятся в папке app / customPackages

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]