如何交换laravel容器中的依赖项

用户1015214

我已经注册了 Paypal 服务提供商:

App\Providers\PaypalHelperServiceProvider::class,

并且,当我在控制器中输入提示时,它会正确解析:

public function refund(Request $request, PaypalHelper $paypal) {...

这是我的提供者类:

class PaypalHelperServiceProvider extends ServiceProvider
{
  protected $defer = true;

  public function register()
  {
      $this->app->bind('App\Helpers\PaypalHelper', function() {
          $test = 'test';
          return new PaypalHelper();
      });
    }

    public function provides()
    {
      $test = 'test';
      return [App\Helpers\PaypalHelper::class];
    }
  }

一切都按预期工作。现在我希望能够修改控制器以采用 PayPal 接口。然后,我将更新我的服务提供者,以有条件地传入真实类或模拟类以进行测试,使用 APP_ENV 变量来确定要使用哪一个。我将一些调试器放入服务提供者类中,但无法让它进入。我想也许它只在需要时加载它们,所以我在我的控制器中放置了一个断点。类确实解析了,但它仍然没有进入服务提供者类!有人可以向我解释为什么会这样吗?即使我修改了代码以传入不同的类类型,它也没有回升。

编辑:

这是我调试时看到的代码流:ControllerDispatcher -> resolveClassMethodDependencies -> resolveMethodDependencies -> transformDependency。此时我们在 RouteDependencyResolveerTrait 中有以下 Laravel 代码:

 protected function transformDependency(ReflectionParameter $parameter, $parameters, $originalParameters)
{
    $class = $parameter->getClass();

    // If the parameter has a type-hinted class, we will check to see if it is already in
    // the list of parameters. If it is we will just skip it as it is probably a model
    // binding and we do not want to mess with those; otherwise, we resolve it here.
    if ($class && ! $this->alreadyInParameters($class->name, $parameters)) {
        return $this->container->make($class->name);
    }
}

由于 getClass() 总是解析为接口名称,当我们调用 container->make() 时,它总是失败

Target [App\Helpers\PaypalHelperInterface] is not instantiable.
用户1015214

我终于发现了这个问题。我的问题是我的提供者根本没有被接受。这是解决方案

composer dumpautoload
php artisan cache:clear

https://laravel.io/forum/02-08-2015-laravel-5-service-provider-not-working

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在容器中安装composer依赖项?

来自分类Dev

如何在容器中安装composer依赖项?

来自分类Dev

Unity中的热交换依赖项

来自分类Dev

如何访问NServiceBus依赖项注入容器?

来自分类Dev

在Docker容器中找不到依赖项

来自分类Dev

如何将依赖项注入到Laravel作业中

来自分类Dev

如何仅使用Nest.js框架中的依赖项注入容器?

来自分类Dev

如何根据需要的类注册依赖项(使用 ASP CORE 中的内置 IOC 容器)

来自分类Dev

Laravel:如何卸载依赖项/插件?

来自分类Dev

在VSCode中连接到远程Docker容器的依赖项?

来自分类Dev

如何将可调用项注入到Symfon2依赖项注入容器服务中

来自分类Dev

如何容器化在同一解决方案中具有依赖项的 .net 核心应用程序?

来自分类Dev

如何防止依赖项在Ant中执行?

来自分类Dev

如何在Gradle中更新依赖项

来自分类Dev

如何避免对android中的依赖项的无知?

来自分类Dev

JavaScript 中如何捆绑嵌套依赖项

来自分类Dev

如何在不同的git仓库中处理后端(laravel)和前端(角度)依赖项

来自分类Dev

如何正确地将依赖项注入Laravel工匠命令中?

来自分类Dev

出现某些依赖项错误时,如何停止在laravel中执行创建动作

来自分类Dev

如何正确地将依赖项注入Laravel工匠命令中?

来自分类Dev

Laravel:从数据库中删除时如何处理依赖项

来自分类Dev

(Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?

来自分类Dev

(Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?

来自分类Dev

如何将交换添加到ECS容器中?

来自分类Dev

如何排除来自POM文件中父项的依赖项

来自分类Dev

如何通过交换熊猫中的列名来过滤重复项

来自分类Dev

如何禁止访问依赖项的依赖项

来自分类Dev

如何更新Laravel Application(不是Composer依赖项)

来自分类Dev

在Laravel 5中将缓存作为依赖项注入

Related 相关文章

  1. 1

    如何在容器中安装composer依赖项?

  2. 2

    如何在容器中安装composer依赖项?

  3. 3

    Unity中的热交换依赖项

  4. 4

    如何访问NServiceBus依赖项注入容器?

  5. 5

    在Docker容器中找不到依赖项

  6. 6

    如何将依赖项注入到Laravel作业中

  7. 7

    如何仅使用Nest.js框架中的依赖项注入容器?

  8. 8

    如何根据需要的类注册依赖项(使用 ASP CORE 中的内置 IOC 容器)

  9. 9

    Laravel:如何卸载依赖项/插件?

  10. 10

    在VSCode中连接到远程Docker容器的依赖项?

  11. 11

    如何将可调用项注入到Symfon2依赖项注入容器服务中

  12. 12

    如何容器化在同一解决方案中具有依赖项的 .net 核心应用程序?

  13. 13

    如何防止依赖项在Ant中执行?

  14. 14

    如何在Gradle中更新依赖项

  15. 15

    如何避免对android中的依赖项的无知?

  16. 16

    JavaScript 中如何捆绑嵌套依赖项

  17. 17

    如何在不同的git仓库中处理后端(laravel)和前端(角度)依赖项

  18. 18

    如何正确地将依赖项注入Laravel工匠命令中?

  19. 19

    出现某些依赖项错误时,如何停止在laravel中执行创建动作

  20. 20

    如何正确地将依赖项注入Laravel工匠命令中?

  21. 21

    Laravel:从数据库中删除时如何处理依赖项

  22. 22

    (Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?

  23. 23

    (Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?

  24. 24

    如何将交换添加到ECS容器中?

  25. 25

    如何排除来自POM文件中父项的依赖项

  26. 26

    如何通过交换熊猫中的列名来过滤重复项

  27. 27

    如何禁止访问依赖项的依赖项

  28. 28

    如何更新Laravel Application(不是Composer依赖项)

  29. 29

    在Laravel 5中将缓存作为依赖项注入

热门标签

归档