public function provideStorageFactories()
{
$cases = [[function () {
return new SingleProcessStorage();
}], [function () {
return new SessionStorage("test");
}], [function () {
vfsStream::setup('fileStorage');
return new FileStorage(vfsStream::url("fileStorage/data"));
}], [function () {
$pdo = new \PDO("sqlite::memory:");
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
return new PDOStorage("test", $pdo);
}], [function () {
return new IPCStorage(ftok(__FILE__, "a"));
}]];
if (getenv("MYSQL_DSN")) {
$cases[] = [function () {
$pdo = new \PDO(getenv("MYSQL_DSN"), getenv("MYSQL_USER"));
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(\PDO::ATTR_AUTOCOMMIT, false);
return new PDOStorage("test", $pdo);
}];
}
if (getenv("PGSQL_DSN")) {
$cases[] = [function () {
$pdo = new \PDO(getenv("PGSQL_DSN"), getenv("PGSQL_USER"));
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
return new PDOStorage("test", $pdo);
}];
}
if (getenv("MEMCACHE_HOST")) {
$cases[] = [function () {
$memcached = new \Memcached();
$memcached->addServer(getenv("MEMCACHE_HOST"), 11211);
return new MemcachedStorage("test", $memcached);
}];
}
if (getenv("REDIS_URI")) {
$cases["PHPRedisStorage"] = [function () {
$uri = parse_url(getenv("REDIS_URI"));
$redis = new Redis();
$redis->connect($uri["host"]);
return new PHPRedisStorage("test", $redis);
}];
$cases["PredisStorage"] = [function () {
$redis = new Client(getenv("REDIS_URI"));
return new PredisStorage("test", $redis);
}];
}
return $cases;
}