Laravel依赖注入无法与新的服务提供者一起工作

5vf7fwbs  于 2023-06-30  发布在  其他
关注(0)|答案(3)|浏览(90)

我目前有一些问题,设置一些依赖注入的新服务,我已经取得。
我试图让PartyRingService注入到一个构造函数中,而不需要传入它。
我在PartyRingServiceProvider中尝试了以下操作:

class PartyRingServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        $this->app->singleton('App\Services\PartyRingService', function ($app) {
            return new PartyRingService();
        });
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        //
    }
}

我已经将新的服务提供者添加到config/app.php的providers数组中:

/*
 * Application Service Providers...
 */
......
App\Providers\PartyRingServiceProvider::class,

这是我尝试注入服务的构造函数:
这是我试图在构造函数中使用我的新服务的类:

class Party
{
    private PartyRingService $partyRingService;

    public function __construct(PartyRingService $partyRingService)
    {
        $this->partyRingService = $partyRingService;
    }
    ...
}

但是,当我尝试使用PartyService时,我得到以下错误:
PHP 8.2.7 10.13.5太少的参数来函数App\Party::__construct(),0传入/var/www/html/app/Http/Controller/PartyController. php第28行和确切的1预期
下面是PartyController的第28行:
$party = new Party();
我觉得我只是错过了一个步骤,所以如果有人能帮我确定它,那就太好了,谢谢。

wnrlj8wa

wnrlj8wa1#

你必须在你的控制器中使用它:

$party = resolve(Party::class);

这对你有用吗

sauutmhj

sauutmhj2#

我不是很清楚,但是在解析Party类的时候,是不是应该加上PartyRingService

{
        $this->app->singleton('App\Party', function ($app) {
            return Party($app->make(PartyRingService::class));
        });
    }
ryhaxcpt

ryhaxcpt3#

确保您已经在控制器文件的顶部导入了Party类和PartyRingService类:

use App\Party;
use App\Services\PartyRingService;

这假定Party类和PartyRingService类存在于正确的名称空间中。

相关问题