olympus999's avatar

Lumen simple service provider returning error "Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in ..."

When function "incomingPOST" is reached, the error is generated. Without the "OrderServiceProvider $order", there is no error. I have been on it days, googling, watching videos and I still cannot understand why I receive this error from the code below (I have tried different options without success):

Route:


  $app->post('/post', 'App\Http\Controllers\PostController@incomingPOST');

});```
Controller 
```<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

use Log;
use \App\Classes\OrderClass;
use \App\Providers\OrderServiceProvider;

class PostController extends Controller
{

  private $token, $request;

  public function __construct()
  {

  }

  public function incomingPOST(Request $request, OrderServiceProvider $order)
...

Service provider:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;

class OrderServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
     public function register()
     {
       $this->app->bind('order', function($app){
           return new \App\Classes\OrderClass;
       });
     }
}

In app.php

$app->register('App\Providers\OrderServiceProvider');

Full error code

[2016-11-01 23:57:36] lumen.ERROR: Illuminate\Contracts\Container\BindingResolutionException: Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Support\ServiceProvider in /var/www/trade/vendor/illuminate/container/Container.php:850
Stack trace:
#0 /var/www/trade/vendor/illuminate/container/Container.php(817): Illuminate\Container\Container->resolveNonClass(Object(ReflectionParameter))
#1 /var/www/trade/vendor/illuminate/container/Container.php(788): Illuminate\Container\Container->getDependencies(Array, Array)
#2 /var/www/trade/vendor/illuminate/container/Container.php(644): Illuminate\Container\Container->build('App\\Providers\\O...', Array)
#3 /var/www/trade/vendor/laravel/lumen-framework/src/Application.php(211): Illuminate\Container\Container->make('App\\Providers\\O...', Array)
#4 /var/www/trade/vendor/illuminate/container/Container.php(574): Laravel\Lumen\Application->make('App\\Providers\\O...')
#5 /var/www/trade/vendor/illuminate/container/Container.php(534): Illuminate\Container\Container->addDependencyForCallParameter(Object(ReflectionParameter), Array, Array)
#6 /var/www/trade/vendor/illuminate/container/Container.php(506): Illuminate\Container\Container->getMethodDependencies(Array, Array)
#7 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(610): Illuminate\Container\Container->call(Array, Array)
#8 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(576): Laravel\Lumen\Application->callControllerCallable(Array, Array)
#9 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(550): Laravel\Lumen\Application->callLumenController(Object(App\Http\Controllers\PostController), 'incomingPOST', Array)
#10 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(512): Laravel\Lumen\Application->callControllerAction(Array)
#11 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(492): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array)
#12 [internal function]: Laravel\Lumen\Application->Laravel\Lumen\Concerns{closure}(Object(Illuminate\Http\Request))
#13 /var/www/trade/vendor/laravel/lumen-framework/src/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#14 /var/www/trade/app/Http/Middleware/SessionMiddleware.php(22): Laravel\Lumen\Routing\Pipeline->Laravel\Lumen\Routing{closure}(Object(Illuminate\Http\Request))
#15 /var/www/trade/vendor/illuminate/pipeline/Pipeline.php(137): App\Http\Middleware\SessionMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#16 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#17 /var/www/trade/vendor/laravel/lumen-framework/src/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#18 /var/www/trade/vendor/illuminate/pipeline/Pipeline.php(104): Laravel\Lumen\Routing\Pipeline->Laravel\Lumen\Routing{closure}(Object(Illuminate\Http\Request))
#19 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(647): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#20 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(493): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#21 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(394): Laravel\Lumen\Application->handleFoundRoute(Array)
#22 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(650): Laravel\Lumen\Application->Laravel\Lumen\Concerns{closure}()
#23 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(400): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#24 /var/www/trade/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(341): Laravel\Lumen\Application->dispatch(NULL)
#25 /var/www/trade/public/index.php(28): Laravel\Lumen\Application->run()
#26 {main}

0 likes
2 replies
tykus's avatar

What exactly are you trying to do??

I don't understand why you are trying to inject a ServiceProvider into a Controller method; are you sure you understand what service providers are for, and the problems they solve?

olympus999's avatar

You were correct. I misunderstood the logic of service provider.

Thank you!

Please or to participate in this conversation.