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

A função para remover um produto parou de funcionar

Boa noite. Uma rápida dúvida. Ao criar a classe ProdutoDao extinguindo o antigo arquivo banco-produto.php, nossa pagina remove-produto.php deixa de funcionar. A minha classe se encontra assim:

require_once("logica-usuario.php");

$produtoDAO = new ProdutoDAO($conexao);

$id = $_POST['id'];
$produtoDAO->removeProduto($id);

$_SESSION["success"] = "Produto removido com sucesso.";
header("Location: produto-lista.php");
die();

Como podemos perceber, a classe ProdutoDAO não pode ser instanciada, pois o import somente é feito no cabecalho.php. Como essa página é apenas de lógica, faz sentido importar o cabecalho.php nela? Seria mais sensato um import manual do produtoDAO.php e do conecta.php? (ao fazer uma dessas importacões a função de remover volta a funcionar).

1 resposta
solução!

Oi Douglas, tudo bom?

Acredito que a ideia fosse isolar em um arquivo php comum entre todas as páginas.

Mas, o ideal mesmo seria isolar o autoloader em um arquivo separado, importando só ele onde fosse necessário.

Importar o cabecalho só pra aproveitar o autoload seria realmente exceder a responsabilidade desse arquivo e sobrecarregar o remove-produto que só tem lógica, como vc comentou.

Incluir o autoloader no ProdutoDAO, nos obrigaria a importar ele também toda vez que quisessemos ter o comportamento de carregamento automatico das classes.

Por isso o melhor é isolar ele em um arquivo mesmo, assim ele mantém uma unica responsabilidade e onde você precisar usar classes você importa unicamente o autoloader =)

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software