Я пытаюсь создать сервис, который можно внедрить в любом месте.Для этого я пытаюсь передать в качестве аргумента компонент HttpClient Symfony 4.3
Я показываю вам сервис
https://i.stack.imgur.com/2384M.png
<?php
namespace App\Service\Callback;
use Symfony\Component\HttpClient\HttpClient;
class Back
{
private $client;
public function __construct(HttpClient $httpClient)
{
$this->client = $httpClient::create();
}
public function sendCallback ( $method, $urlCallback, $option)
{
$response = $this->client->request($method,$urlCallback,$option);
$statusCode = $response->getStatusCode();
return $statusCode;
}
}
Ну, я пытаюсьзагрузить его в services.yml
# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: 'en'
base_url_front: '%env(BASE_URL_FRONT)%'
mobile_type: 2
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
Nexy\Slack\Client: '@nexy_slack.client'
Symfony\Component\HttpClient\HttpClient: '@http.client'
# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
resource: '../src/*'
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
# controllers are imported separately to make sure services can be injected
# as action arguments even if you don't extend any base controller class
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
App\Service\Models\:
resource: '../src/Service/Models'
tags: ['@doctrine.orm.entity_manager','@nexy_slack.client']
slack_client:
class: 'App\Service\SlackClient'
autowire : true
arguments: ['@nexy_slack.client','@kernel']
public : true
callback_client:
class: 'App\Service\Callback\Back'
autowire: true
arguments: ['@http.client']
public: true
App\Service\Apiclient\AteneaService:
arguments: ["%kernel.environment%"]
App\Service\Apiclient\UpmService:
arguments: ["%kernel.environment%"]
App\Service\Apiclient\HermesService:
arguments: ["%kernel.environment%"]
App\Service\Socket\:
resource: '../src/Service/Socket'
tags: ['@kernel','@nexy_slack.client']
Проблема заключается в том, что если я запускаю php bin / console debug: autowiring в терминале, чтобы узнать, создал ли я его, возвращается следующая ошибка:
Вы запросили несуществующую службу "http.client".
В конце концов я хочу добиться чего-то вроде этого:
public function getClient(Back $back)
{
$back->sendCallback('GET','http://vro-back.localhost:8888/callback/test');
}
Но я не могу, потому что я не могу внедрить его.
В конце, если вы посмотрите на services.yml, я пытаюсь создать псевдоним для компонента HttpClient, поэтому я могу передать его какаргумент конструктору класса Back
И маршрут, который я пытаюсь загрузить, существует ...
Symfony \ Component \ HttpClient \ HttpClient;
Это компонент, с которым я пытаюсь работать
https://symfony.com/doc/current/components/http_client.html
Я быпризнателен за любую помощь.