未检测到包服务提供者的依赖注入

时间:2021-04-08 16:44:04

标签: laravel

我正在尝试使用自定义包中的服务提供商:

class ReferralsServiceProvider extends ServiceProvider
    {
        public const PACKAGE_NAME = 'referrals';
    
        /**
         * Perform post-registration booting of services.
         *
         * @return void
         */
        public function boot()
        {
            ...
        }
    
        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {
            $this->app->bind(PreReferralsRepositoryInterface::class, WorkflowPreReferrals::class);
        }

服务提供者在包 composer.json 文件中注册,因此它在使用的应用程序中自动注册。

"extra": {
    "laravel": {
      "providers": [
        "Propel\\Referrals\\ReferralsServiceProvider"
      ]
    }
  }

但是在我们主应用程序中的一个控制器中:

class ReferalValidationController extends Controller
{
    protected $referrals;

    public function __construct(PreReferralsRepositoryInterface $referrals)
    {
        ...
    }

我收到错误:

Argument 1 passed to App\Http\Controllers\ReferalValidationController::__construct() must be an instance of Propel\Referrals\Repositories\PreReferralsRepositoryInterface, instance of Propel\Referrals\Repositories\WorkflowPreReferrals given

我知道服务提供者已注册的事实,因为我可以将绑定的第二个参数更改为另一个类,然后它将反映在错误中。我是否错过了绑定中的一些关键内容?就好像控制者不知道服务提供者一样。

0 个答案:

没有答案
相关问题