Senhores, boa noite, estou tendo dificuldade para popular os set da minha quando a classe possui o método construtor. No exemplo abaixo, a classe Funcao com o array da minha consulta com PDO. Alguém poderia me explicar o que estou fazendo errado ?
Classe função
<?php
{
private $id;
private $nome;
public function __construct($nome)
{
$this->nome = $nome;
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getNome()
{
return $this->nome;
}
}
O método inserir da classe FuncaoDao está funcionando normalmente, ou seja, consigo inserir novas funções no banco de dados, enquanto meu problema está no método listar, isso por causa do construtor da classe. Como faço para passar o atributo $nome pela linha $funcoes = $conexao->query(\PDO::FETCH_CLASS, Funcao::CLASS);
<?php
class FuncaoDao
{
public function inserir(Funcao $funcao)
{
$query = "INSERT INTO funcoes(nome) VALUES (:nome)";
$conexao = Conexao::pegarConexao();
$stmt = $conexao->prepare($query);
$stmt->bindValue(':nome',$funcao->getNome());
$stmt->execute();
}
public static function listar()
{
$funcoes = array();
$query = "SELECT id,nome FROM funcoes ORDER BY nome ASC";
$conexao = Conexao::pegarConexao();
$funcoes = $conexao->query(\PDO::FETCH_CLASS, Funcao::CLASS);
return $funcoes;
}
Quando chamo a function listar uma mensagem de erro é exibida informando que nenhum parâmetro foi passado para o construtor da classe função.
<?php
$funcoes = FuncaoDao::listar();
foreach($funcoes as funcao) :
echo $funcao->getId()." - ".$funcao->getNome();
echo"</br:>";
endforeach;
?>