Передать параметр для построения

Я пишу такой класс:

class SERVICE
{
    public function __construct($a, UserRepository $repository) { 
        $this->repository = $repository; $this->relations = [ 
            [
                '\Api\Users\Models\Client', 'clients', '$a'
            ]
        ]; 
        $this->events = [ ]; 
    } 
    ... 
 }

и я использовал этот класс вот так:

use SERVICE; 

class TEST 
{ 
    public function __construct(SERVICE $service) 
    { 
        $this->service = $service; 
    } 
}

и у меня есть ошибка:

Unresolvable dependency resolving [Parameter #0 [ $a ]]

как я могу отправить параметр таким образом?

В вашем сервисе нет подсказки типа для $ a.

user9189147 12.12.2018 15:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Laravel может автоматически вводить только https://laravel.com/docs/5.5/container#automatic-injection. Для вашего случая в сервисе есть параметр $a, тип которого не определен. Вы должны быть изменены либо вашей службой __construct, либо классом Test. Например

use SERVICE; 

class TEST 
{ 
    public function __construct(UserRepository $repository) { 
        $this->service = new Service('some-value', $repository);
    }
}

Или смените услугу вот так

class SERVICE
{
    public function __construct(UserRepository $repository) { 
        $this->repository = $repository;  
        $this->events = [ ]; 
    } 

    public function setRelations($a) 
    {
         $this->relations = [ 
            [
                '\Api\Users\Models\Client', 'clients', '$a'
            ]
        ];
    }
    ... 
 }

И использование

use SERVICE; 

class TEST 
{ 
    public function __construct(SERVICE $service) 
    { 
        $this->service = $service;
        $this->service->setRelations('some-value'); 
    } 
}

Другие вопросы по теме