# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.

parameters:

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.

    # 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,Routes,Core/Event/EventResult.php}'

    App\Test\Fixtures\:
        resource: '../tests/fixtures/*'

    # 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\Core\Router:
        tags: ['routing.loader']

    # Wrapper around Doctrine's StaticPHP metadata driver
    app.schemadef_driver:
        class: App\DependencyInjection\Compiler\SchemaDefDriver
        arguments: 
            - '%kernel.project_dir%/src/Entity'

    App\Core\I18n\TransExtractor:
        tags:
            - { name: 'translation.extractor', alias: social }

    App\Core\Queue\MessageHandler:
      tags: ['messenger.message_handler']

    App\Core\DB\UpdateListener:
      tags:
        - { name: doctrine.event_listener , event: preUpdate }

    Symfony\Bridge\Doctrine\Security\RememberMe\DoctrineTokenProvider: ~

    Plugin\:
      resource: '../plugins/*'
      exclude: '../plugins/*/{scripts,classes,lib,actions,locale,doc,tests}'
      tags: ['controller.service_arguments']

    Component\:
      resource: '../components/*'
      exclude: '../components/*/{scripts,classes,lib,actions,locale,doc,tests}'
      tags: ['controller.service_arguments']

