services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false

    PhpList\Core\Core\ApplicationStructure:
        public: true

    PhpList\Core\Security\Authentication:
        public: true

    PhpList\Core\Security\HashGenerator:
        public: true

    PhpList\Core\Routing\ExtraLoader:
        tags: [routing.loader]

    PhpList\Core\Domain\Repository:
        abstract: true
        autowire: true
        autoconfigure: false
        public: true
        factory: Doctrine\ORM\EntityManagerInterface:getRepository

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    PhpList\Core\EmptyStartPageBundle\Controller\:
        resource: '../src/EmptyStartPageBundle/Controller'
        public: true
        tags: [controller.service_arguments]
