public function process(ContainerBuilder $container)
    {
        $service = $container->getDefinition("rms_push_notifications");

        foreach ($container->findTaggedServiceIds("rms_push_notifications.handler") as $id => $attributes) {
            if (!isset($attributes[0]["osType"])) {
                throw new \LogicException("Handler {$id} requires an osType attribute");
            }

            $definition = $container->getDefinition($id);

            // Get reflection class for validate handler
            try {
                $class = $definition->getClass();

                // Class is parameter
                if (strpos($class, '%') === 0) {
                    $class = $container->getParameter(trim($class, '%'));
                }

                $refClass = new \ReflectionClass($class);
            } catch (\ReflectionException $ref) {
                // Class not found or other reflection error
                throw new \RuntimeException(sprintf(
                    'Can\'t compile notification handler by service id "%s".',
                    $id
                ), 0, $ref);
            } catch (ParameterNotFoundException $paramNotFound) {
                // Parameter not found in service container
                throw new \RuntimeException(sprintf(
                    'Can\'t compile notification handler by service id "%s".',
                    $id
                ), 0, $paramNotFound);
            }

            // Required interface
            $requiredInterface = 'RMS\\PushNotificationsBundle\\Service\\OS\\OSNotificationServiceInterface';
            if (!$refClass->implementsInterface($requiredInterface)) {
                throw new \UnexpectedValueException(sprintf(
                   'Notification service "%s" by id "%s" must be implements "%s" interface!' ,
                   $refClass->getName(), $id, $requiredInterface
                ));
            }

            // Add handler to service notifications storage
            $service->addMethodCall("addHandler", array($attributes[0]["osType"], new Reference($id)));
        }
    }
public function process(ContainerBuilder $container)
    {
        $service = $container->getDefinition("rms_push_notifications");

        foreach ($container->findTaggedServiceIds("rms_push_notifications.handler") as $id => $attributes) {
            if (!isset($attributes[0]["osType"])) {
                throw new \LogicException("Handler {$id} requires an osType attribute");
            }

            $definition = $container->getDefinition($id);

            // Get reflection class for validate handler
            try {
                $class = $definition->getClass();

                // Class is parameter
                if (strpos($class, '%') === 0) {
                    $class = $container->getParameter(trim($class, '%'));
                }

                $refClass = new \ReflectionClass($class);
            } catch (\ReflectionException $ref) {
                // Class not found or other reflection error
                throw new \RuntimeException(sprintf(
                    'Can\'t compile notification handler by service id "%s".',
                    $id
                ), 0, $ref);
            } catch (ParameterNotFoundException $paramNotFound) {
                // Parameter not found in service container
                throw new \RuntimeException(sprintf(
                    'Can\'t compile notification handler by service id "%s".',
                    $id
                ), 0, $paramNotFound);
            }

            // Required interface
            $requiredInterface = 'RMS\\PushNotificationsBundle\\Service\\OS\\OSNotificationServiceInterface';
            if (!$refClass->implementsInterface($requiredInterface)) {
                throw new \UnexpectedValueException(sprintf(
                   'Notification service "%s" by id "%s" must be implements "%s" interface!' ,
                   $refClass->getName(), $id, $requiredInterface
                ));
            }

            // Add handler to service notifications storage
            $service->addMethodCall("addHandler", array($attributes[0]["osType"], new Reference($id)));
        }
    }
public function process ( ContainerBuilder $ container ) { $ service = $ container -> getDefinition ( "rms_push_notifications" ) ; foreach ( $ container -> findTaggedServiceIds ( "rms_push_notifications.handler" ) as $ id => $ attributes ) { if ( ! isset ( $ attributes [ 0 ] [ "osType" ] ) ) { throw new \ LogicException ( "Handler {$id} requires an osType attribute" ) ; } $ definition = $ container -> getDefinition ( $ id ) ; // Get reflection class for validate handler try { $ class = $ definition -> getClass ( ) ; // Class is parameter if ( strpos ( $ class , '%' ) === 0 ) { $ class = $ container -> getParameter ( trim ( $ class , '%' ) ) ; } $ refClass = new \ ReflectionClass ( $ class ) ; } catch ( \ ReflectionException $ ref ) { // Class not found or other reflection error throw new \ RuntimeException ( sprintf ( 'Can\'t compile notification handler by service id "%s".' , $ id ) , 0 , $ ref ) ; } catch ( ParameterNotFoundException $ paramNotFound ) { // Parameter not found in service container throw new \ RuntimeException ( sprintf ( 'Can\'t compile notification handler by service id "%s".' , $ id ) , 0 , $ paramNotFound ) ; } // Required interface $ requiredInterface = 'RMS\\PushNotificationsBundle\\Service\\OS\\OSNotificationServiceInterface' ; if ( ! $ refClass -> implementsInterface ( $ requiredInterface ) ) { throw new \ UnexpectedValueException ( sprintf ( 'Notification service "%s" by id "%s" must be implements "%s" interface!' , $ refClass -> getName ( ) , $ id , $ requiredInterface ) ) ; } // Add handler to service notifications storage $ service -> addMethodCall ( "addHandler" , array ( $ attributes [ 0 ] [ "osType" ] , new Reference ( $ id ) ) ) ; } }
Processes any handlers tagged accordingly

@param  ContainerBuilder $container
@return void
Processes any handlers tagged accordingly