Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no Retorno do método HydrateStudentList()

Estou usando o VS Code e quando fiz a implementação desse método a IDE acusa um erro no tipo do retorno do método. Diz que espera um array mas a variável $studentList é do tipo da classe Student.

Abaixo o cóigo:

private function hydrateStudentList(\PDOStatement $stmt): array
    {
        $studentDataList = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $studentList = [];

        foreach ($studentDataList as $studentData) {
            $studentList = new Student(
                $studentData['id'],
                $studentData['name'],
                new \DateTimeImmutable($studentData['birth_date'])
            );
        }

        return $studentList;
    }

Aqui a mensagem de erro na IDE:

Expected type 'array'. Found 'Alura\Pdo\Domain\Model\Student'.

Pra mim não está fazendo sentido isso. Mesmo que $studentList seja um array de objetos do tipo Student ela ainda é um array. Não é por que um array carrega um objeto do tipo X que ele deixa de ser um array não é?

Tentei executar o código mesmo assim pensando que talvez pudesse ser algum erro da extensão Intelephense (que faz o papel de intelisense de PHP no VS Code), mas ainda assim deu erro:

PHP Fatal error: Uncaught TypeError: Return value of Alura\Pdo\Infrastructure\Repository\PdoStudentRepository::HydrateStudentList() must be of the type array, object returned in C:\Projetos\php-pdo\src\Infrastructure\Repository\PdoStudentRepository.php:48

1 resposta
solução!

Já descobri o erro... não coloquei [] na frente de $studentList pra indicar um array na hora de preencher as informações do array.