Проблема с автоматическим внедрением Laravel (слишком мало аргументов) после перехода на PHP 8.2 ⇐ Php
Проблема с автоматическим внедрением Laravel (слишком мало аргументов) после перехода на PHP 8.2
Недавно я перенес свой проект 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?
Недавно я перенес свой проект 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?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение