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