【问题标题】:Binding Resolution Laravel 5.3绑定分辨率 Laravel 5.3
【发布时间】:2017-01-24 04:08:22
【问题描述】:

有什么区别

$this->app->when('App\Http\Controllers\StaffController')
      ->needs('App\Repositories\User\UserInterface')
      ->give('App\Repositories\User\StaffRepository');

这个有效!

$this->app->when(StaffController::class)
      ->needs(UserInterface::class)
      ->give(StaffRepository::class);

但是这个不行。有什么问题?

【问题讨论】:

  • 我想这是一个命名空间问题。 App\Http\Controllers\StaffController::class 而不是 StaffController::class 等是否有效?你遇到了什么错误?
  • 不行,还是不行。
  • 你遇到了什么错误?
  • Target [App\Repositories\User\UserInterface] is not instantiable while building [App\Http\Controllers\StaffController].
  • $this->app->when(\App\Http\Controllers\StaffController::class)->needs(\App\Repositories\User\UserInterface::class)->give(\App\Repositories\User\StaffRepository::class); 工作吗?

标签: laravel


【解决方案1】:

鉴于这是可行的:

$this->app->when(\App\Http\Controllers\StaffController::clas‌​s)
  ->needs(\App\Repos‌​itories\User\UserInt‌​erface::class)
  ->give‌​(\App\Repositories\U‌​ser\StaffRepository:‌​:class);

您遇到了命名空间问题。您可以将其与前导 \s 一起使用,但很可能将其放在文件顶部会解决它:

use App\Http\Controllers\StaffController;
use App\Repos‌​itories\User\UserInt‌​erface;
use App\Repositories\U‌​ser\StaffRepository;

【讨论】:

    猜你喜欢
    • 2015-09-21
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多