14 use Doctrine\DBAL\DriverManager;
15 use Symfony\Component\Cache\Adapter\AbstractAdapter;
16 use Symfony\Component\Cache\Traits\RedisClusterProxy;
17 use Symfony\Component\Cache\Traits\RedisProxy;
29 if (!\is_string($connection) && !\is_object($connection)) {
30 throw new \TypeError(sprintf(
'Argument 1 passed to "%s()" must be a string or a connection object, "%s" given.', __METHOD__, \gettype($connection)));
34 case $connection instanceof \Redis:
35 case $connection instanceof \RedisArray:
36 case $connection instanceof \RedisCluster:
37 case $connection instanceof \Predis\ClientInterface:
38 case $connection instanceof RedisProxy:
39 case $connection instanceof RedisClusterProxy:
42 case $connection instanceof \Memcached:
45 case $connection instanceof \PDO:
48 case !\is_string($connection):
49 throw new \InvalidArgumentException(sprintf(
'Unsupported Connection: "%s".', \get_class($connection)));
50 case 0 === strpos($connection,
'file://'):
53 case 0 === strpos($connection,
'redis:'):
54 case 0 === strpos($connection,
'rediss:'):
55 case 0 === strpos($connection,
'memcached:'):
56 if (!class_exists(AbstractAdapter::class)) {
57 throw new \InvalidArgumentException(sprintf(
'Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection));
59 $handlerClass = 0 === strpos($connection,
'memcached:') ? MemcachedSessionHandler::class : RedisSessionHandler::class;
60 $connection = AbstractAdapter::createConnection($connection, [
'lazy' =>
true]);
62 return new $handlerClass($connection);
64 case 0 === strpos($connection,
'pdo_oci://'):
65 if (!class_exists(DriverManager::class)) {
66 throw new \InvalidArgumentException(sprintf(
'Unsupported DSN "%s". Try running "composer require doctrine/dbal".', $connection));
68 $connection = DriverManager::getConnection([
'url' => $connection])->getWrappedConnection();
71 case 0 === strpos($connection,
'mssql://'):
72 case 0 === strpos($connection,
'mysql://'):
73 case 0 === strpos($connection,
'mysql2://'):
74 case 0 === strpos($connection,
'pgsql://'):
75 case 0 === strpos($connection,
'postgres://'):
76 case 0 === strpos($connection,
'postgresql://'):
77 case 0 === strpos($connection,
'sqlsrv://'):
78 case 0 === strpos($connection,
'sqlite://'):
79 case 0 === strpos($connection,
'sqlite3://'):
83 throw new \InvalidArgumentException(sprintf(
'Unsupported Connection: "%s".', $connection));