Как зарегистрировать сервис в symfony?

Пользователь

от johnpaul.blick , в категории: PHP , 3 года назад

Как зарегистрировать сервис в symfony?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от raina , 3 года назад

@johnpaul.blick Чтобы зарегестрировать сервис в Symfony Вам необходимо объявить его в файле app/config/services.yml


1
2
3
services:
    app.test_service:
        class: AppBundle\Service\TestService


После чего создать файл TestService в данном namespace:


1
2
3
4
5
6
7
8
9
<?php

namespace AppBundle\Service;


class TestService
{
  // ... Ваша логика
}


Вы можете также если необходимо передать другие сервисы или параметры в Ваш новый сервис путем обьявления их в services.yml в arguments секции:


1
2
3
4
services:
    app.test_service:
        class: AppBundle\Service\TestService
        arguments: ["@doctrine.orm.entity_manager"]


В данном примере мы передаем Doctrine Entity Manager в сервис и получить его в сервисе самом можно будет через конструктор, пример:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php

namespace AppBundle\Service;


class TestService
{
    /**
     * @var EntityManager
     */
    private $em;

    public function __construct(EntityManager $entityManager)
    {
        $this->em = $entityManager;
    }
}

Пользователь

от kurt , 2 года назад

@johnpaul.blick 

Чтобы зарегистрировать сервис в Symfony, вы должны создать класс сервиса и определить его настройки с помощью аннотаций, а затем зарегистрировать сервис с помощью файла сервиса.


Создайте новый файл в папке src/ с именем сервиса, например, MyService.php. Определите класс сервиса в этом файле. Например:

1
2
3
4
5
6
namespace App;

class MyService
{
    // сервис код здесь
}


Теперь определите настройки сервиса с помощью аннотаций. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentDependencyInjectionDefinition;

/**
 * @Service
 * @Tag("my_service_tag")
 */
class MyService
{
    // сервис код здесь
}


Теперь создайте файл сервиса в папке config/ с именем сервиса, например, my_service.yaml. В этом файле определите сервис с помощью следующего кода:

1
2
3
4
services:
    AppMyService:
        tags:
            - { name: my_service_tag }


Теперь сервис зарегистрирован и готов к использованию. Вы мож