douzun4443 2017-12-11 07:51
浏览 112
已采纳

无法使用IOC contatiner laravel实例化类

I`m trying to get instanse of my class using dependency injection. This class has own service provider that registered in app.php

 class Something
 {
      private $variable;

      public function __construct(string $variable)
      {
          $this->variable = $variable; 
      }
 }

this is service provider

class SomethingServiceProvider extends ServiceProvider
{

    public function boot()
    {

    }


    public function register()
    {
        $this->app->singleton('Something', function () {
            return new Something( 'test');
        });
    }
}

and when I try to use this class instance in controller...

class TestController extends AppBaseController
{
    public function __construct(Something $something)
    {
        $this->something = $something;
    }
...

I got error:

"Unresolvable dependency resolving [Parameter #0 [ string $variable ]] in class Something at Container->unresolvablePrimitive(object(ReflectionParameter)) in Container.php (line 848) "

  • 写回答

2条回答 默认 最新

  • dongzhao4036 2017-12-11 08:08
    关注

    I guess YourServiceProvider::__construct accepts a non-typed $app instance. This means that Laravel cannot automatically resolve it. Try typing it; public function __construct(Application $app) with the proper use-statement.

    More: https://laravel.com/docs/5.3/container#automatic-injection

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB yalmip 可转移负荷的简单建模出错,如何解决?
  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?