Проблема с автоматическим внедрением Laravel (слишком мало аргументов) после перехода на PHP 8.2Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с автоматическим внедрением Laravel (слишком мало аргументов) после перехода на PHP 8.2

Сообщение Anonymous »


Недавно я перенес свой проект Laravel на PHP 8.1 и столкнулся с проблемой внедрения зависимостей в мои контроллеры. Я настроил автоматическое внедрение в своем AppServiceProvider с помощью метода привязки, но получаю ошибку «Слишком мало аргументов» в методах моего контроллера.

Вот соответствующая часть моего AppServiceProvider:

use App\Repositories\TenantRepository; используйте App\Repositories\AdministrationRepository; используйте App\Repositories\TenantRepositoryInterface; используйте App\Repositories\AdministrationRepositoryInterface; класс AppServiceProvider расширяет ServiceProvider { регистр публичной функции() { $this->app->bind(TenantRepositoryInterface::class, TenantRepository::class); $this->app->bind(AdministrationRepositoryInterface::class, AdministrationRepository::class); } } А вот пример метода контроллера:

use App\Repositories\TenantRepositoryInterface; используйте App\Repositories\AdministrationRepositoryInterface; класс [ControllerName] расширяет контроллер { публичная функция tenantListe($message = "", $niveauMessage = "", TenantRepositoryInterface $interface) { // Реализация метода... } // Другие методы контроллера... } У меня есть несколько методов контроллера, каждый из которых использует свой интерфейс репозитория. До миграции эта установка работала нормально.

Как устранить ошибку «Слишком мало аргументов» и правильно настроить внедрение зависимостей в методы контроллера Laravel после перехода на PHP 8.1?

После того как я столкнулся с проблемой «слишком мало аргументов» в моих контроллерах Laravel после перехода на PHP 8.1, я попытался реорганизовать параметры, поместив TenantRepositoryInterface $interface в качестве первого параметра в сигнатуре метода. Например:

публичная функция tenantListe(TenantRepositoryInterface $interface, $message = "", $niveauMessage = "") Эта корректировка решила проблему для этого конкретного метода. Однако, учитывая большое количество методов в моем проекте, реорганизация каждого метода вручную не является масштабируемым решением.

Есть ли более эффективный и автоматизированный способ решения этой проблемы во всех методах моего контроллера, учитывая недавний переход на PHP 8.1?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»