PDO s'occupe des attributs en leur affectant la valeur de la colonne du même nom.
Tu n'as donc pas besoin que ton constructeur s'en occupe ni de lui passer des paramètres.
=> Supprimes ton constructeur et le troisième paramètre de ton appel à PDOStatement::fetchAll.
Le problème, j'imagine, est que si ta classe n'est pas utilisée que par PDO, comment "hydrater" ton objet ? Dans ce cas, il faut rendre le(s) paramètre(s) de celui-ci optionnel(s) et/ou passer par les mutateurs quand tu crées toi-même un objet de façon à ce que la classe soit compatible avec le fonctionnement de PDO.
PS : pour le nom de la classe, à moins d'utiliser une vieille version de PHP (PHP < 5.5), je pense qu'il est préférable d'utiliser la notation professeur::class.
Message édité par pluj le 25-01-2018 à 16:56:10