Alternativa D - new PDO - PDOException
Análise Detalhada
A questão aborda o uso da biblioteca PDO (PHP Data Objects) para conectar ao banco de dados PostgreSQL via PHP. Vamos analisar os pontos principais do código para identificar as lacunas corretas.
1. Identificação da Classe de Conexão
Observe a string de conexão definida na variável $dsn:
"pgsql:host=" . HOST . ";port=". PORT .";dbname=" . DBNAME . ";user=" . USER . ";password=" . PASSWORD
- O prefixo
pgsql: indica explicitamente que estamos usando o driver PostgreSQL. - A forma como as credenciais são passadas (uma string grande contendo parâmetros separados por ponto e vírgula) é característica da configuração de DSN (Data Source Name) utilizada pelo PDO.
- Para criar uma conexão com PDO, utilizamos o construtor da classe
PDO. A sintaxe correta é new PDO(string $dsn).
Portanto, a primeira lacuna deve conter new PDO.
2. Tratamento de Exceções
O código utiliza uma estrutura de bloqueio try ... catch, fundamental para segurança em programação quando há risco de erros de conexão (como senha incorreta ou servidor indisponível).
- Quando ocorre um erro durante a tentativa de conexão com o PDO, ele lança uma exceção específica.
- A classe de exceção correspondente ao PDO é a
PDOException. - Se usássemos
mysqli (alternativas A e C), a classe de exceção seria diferente (ou não haveria tratamento automático via catch dessa forma sem configurações específicas de modo de exceção), e a função seria mysqli_connect(). SQLException (alternativa A) é uma classe comum em linguagens como Java, mas não é a padrão nativa do PHP para esta situação.
Resumo das Lacunas
| Lacuna | Conteúdo Necessário | Motivo |
|---|
| 1ª Lacuna | new PDO | Sintaxe obrigatória para instanciar a conexão. |
| 2ª Lacuna | PDOException | Classe responsável por capturar erros de conexão do PDO. |
Por que as outras estão erradas?
- A e C (mysqli): O código usa
pgsql, não MySQL. Além disso, mysqli_connect recebe argumentos separados, não uma string formatada como DSN concatenada desta forma. - B (PDOConnect): Não existe uma classe chamada
PDOConnect no PHP. A classe é simplesmente PDO. - E (database_connect): Não existe função
database_connect na biblioteca padrão do PHP.
Conclusão:
Para que o código funcione corretamente conectando-se ao PostgreSQL, deve-se instanciar a classe PDO e capturar a exceção PDOException.