Snc\RedisBundle\DependencyInjection\SncRedisExtension::loadPhpredisClient PHP Method

loadPhpredisClient() protected method

Loads a redis client using phpredis.
protected loadPhpredisClient ( array $client, ContainerBuilder $container )
$client array A client configuration
$container Symfony\Component\DependencyInjection\ContainerBuilder A ContainerBuilder instance
    protected function loadPhpredisClient(array $client, ContainerBuilder $container)
    {
        $connectionCount = count($client['dsns']);
        if (1 !== $connectionCount) {
            throw new \RuntimeException('Support for RedisArray is not yet implemented.');
        }
        $dsn = $client['dsns'][0];
        /** @var \Snc\RedisBundle\DependencyInjection\Configuration\RedisDsn $dsn */
        $phpredisId = sprintf('snc_redis.phpredis.%s', $client['alias']);
        $phpredisDef = new Definition($container->getParameter('snc_redis.phpredis_client.class'));
        if ($client['logging']) {
            $phpredisDef = new Definition($container->getParameter('snc_redis.phpredis_connection_wrapper.class'));
            $phpredisDef->addArgument(array('alias' => $client['alias']));
            $phpredisDef->addArgument(new Reference('snc_redis.logger'));
        }
        $phpredisDef->addTag('snc_redis.client', array('alias' => $client['alias']));
        $phpredisDef->setPublic(false);
        $connectMethod = $client['options']['connection_persistent'] ? 'pconnect' : 'connect';
        $connectParameters = array();
        if (null !== $dsn->getSocket()) {
            $connectParameters[] = $dsn->getSocket();
            $connectParameters[] = null;
        } else {
            $connectParameters[] = $dsn->getHost();
            $connectParameters[] = $dsn->getPort();
        }
        if ($client['options']['connection_timeout']) {
            $connectParameters[] = $client['options']['connection_timeout'];
        } else {
            $connectParameters[] = null;
        }
        if ($client['options']['connection_persistent']) {
            $connectParameters[] = $dsn->getPersistentId();
        }
        $phpredisDef->addMethodCall($connectMethod, $connectParameters);
        if ($client['options']['prefix']) {
            $phpredisDef->addMethodCall('setOption', array(\Redis::OPT_PREFIX, $client['options']['prefix']));
        }
        if (null !== $dsn->getPassword()) {
            $phpredisDef->addMethodCall('auth', array($dsn->getPassword()));
        }
        if (null !== $dsn->getDatabase()) {
            $phpredisDef->addMethodCall('select', array($dsn->getDatabase()));
        }
        $container->setDefinition($phpredisId, $phpredisDef);
        $container->setAlias(sprintf('snc_redis.%s', $client['alias']), $phpredisId);
        $container->setAlias(sprintf('snc_redis.%s_client', $client['alias']), $phpredisId);
    }