protected function getCompressor($type) { switch ($type) { case null: return new Uncompressed(); case 'gz': case 'gzip': return new Gzip(); default: throw new InvalidArgumentException("Compression type '{$type}' is not supported. Known values are: gz, gzip"); } }