Olá, terminando as aulas me deparei com um erro, os getters no arquivo "produto-lista.php" me avisam que o metodo getNome() por exemplo nao existe.
<?php
require_once("cabecalho.php");
require_once("logica-usuario.php");
verificaUsuario();
?>
<table class="table table-striped table-bordered">
<?php
$produtoDao = new ProdutoDao($connection);
$produtos = $produtoDao->listaProdutos();
foreach($produtos as $produto) :
?>
<tr>
<td><?= $produto->getNome() ?></td>
<td><?= $produto->getPreco() ?></td>
<td><?= $produto->calculaImposto()?></td>
<td><?= substr($produto->getDescricao(), 0, 70) ?></td>
<td><?= $produto->getCategoria()->getNome()?></td>
<td><?php
if($produto->isLivro()){
echo "ISBN: ".$produto->getIsbn();
}
?>
</td>
<td><a class="btn btn-primary" href="produto-altera-formulario.php?id=<?=$produto->getId()?>">Alterar</a></td>
<td>
<form action="remove-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto->getId()?>" />
<button class="btn btn-danger">Remover</button>
</form>
</td>
</tr>
<?php endforeach
?>
</table>
<?php include("rodape.php"); ?>
Avisa também que os metodos no arquivo ProdutoDAO.php referente a getIsbn(), getWaterMark() e getTaxaImposto() não existem em Produto
$isbn = "";
if($produto->isLivro()) {
$isbn = $produto->getIsbn();
}
$waterMark = "";
if($produto->isWaterMark()) {
$waterMark = $produto->getWaterMark();
}
$taxaImpressao = "";
if($produto->isTaxaImpressao()) {
$taxaImpressao = $produto->getTaxaImpressao();
}
Produto.php
abstract class Produto {
private $id;
private $nome;
private $preco;
private $descricao;
private $categoria;
private $usado;
public function isLivro(){
return $this instanceof Livro;
}
public function isTaxaImpressao(){
return $this instanceof LivroFisico;
}
public function isWaterMark(){
return $this instanceof Ebook;
}
abstract function atualizaBaseadoEm($params);
Ebook.php
<?php
class Ebook extends Livro{
private $waterMark;
public function atualizaBaseadoEm($params) {
$this->setIsbn($params["isbn"]);
$this->setWaterMark($params["waterMark"]);
}
//GETTERS AND SETTERS
public function getWaterMark(){
return $this->waterMark;
}
public function setWaterMark($waterMark){
$this->waterMark = $waterMark;
}
}
Coloquei o Ebook.php porque no Produto-formulario-base.php ele diz que getWaterMark() nao existe in LivroFisico. Alguem sabe o que pode estar acontecendo?