1
resposta

Classe não inicializada

Olá,

As opções dos exercícios, na prática, estão todas incorretas.

Visto que a classe Categoria não teve seus atributos inicializados, apenas o método listas()consumido, não deveríamos chamar seus getters pelo $categoria->id.

Sendo assim, as resposta realmente corretas, seriam:

<?php foreach ($lista as $linha) { ?>
<tr>
  <td><a href="categorias-detalhe.php?id=<?= $linha['id'] ?>" class="btn btn-link"><?= $linha['id'] ?></a></td>
  <td><a href="categorias-detalhe.php?id=<?= $linha['nome'] ?>" class="btn btn-link"><?= $linha['nome'] ?></a></td>
  <td><a href="/categorias-editar.php?id=<?= $linha['id'] ?>" class="btn btn-info">Editar</a></td>
  <td><a href="/categorias-deletar.php?id=<?= $linha['id'] ?>" class="btn btn-danger">Excluir</a></td>
</tr>
<?php } ?>

ou

<?php foreach ($lista as $linha): ?>
<tr>
  <td><a href="categorias-detalhe.php?id=<?= $linha['id'] ?>" class="btn btn-link"><?= $linha['id'] ?></a></td>
  <td><a href="categorias-detalhe.php?id=<?= $linha['nome'] ?>" class="btn btn-link"><?= $linha['nome'] ?></a></td>
  <td><a href="/categorias-editar.php?id=<?= $linha['id'] ?>" class="btn btn-info">Editar</a></td>
  <td><a href="/categorias-deletar.php?id=<?= $linha['id'] ?>" class="btn btn-danger">Excluir</a></td>
</tr>
<?php endforeach ?>

Apesar de que no decorrer do curso possivelmente esses atributos sejam populados, no momento do curso isso ainda não é realidade.

1 resposta

Olá Caique,O exercício de fato é meio estranho.

Digo isso porque o exercício nos dá uma visão apenas do método listar da classe Categoria, o que não significa que ela não tenha os demais elementos ou que eles não tenham um valor padrão.

Mas de fato é uma construção muito esquisita,

<?php foreach ($lista as $linha): ?>
    <tr>
        <td><a href="categorias-detalhe.php?id=<?php echo $linha['id'] ?>" class="btn btn-link">
                <?php echo $categoria->id ?></a></td>
        <td><a href="categorias-detalhe.php?id=<?php echo $linha['nome'] ?>" class="btn btn-link">
                <?php echo $categoria->nome ?></a></td>
        <td><a href="/categorias-editar.php?id=#" class="btn btn-info">Editar</a></td>
        <td><a href="/categorias-deletar.php?id=#" class="btn btn-danger">Excluir</a></td>
    </tr>
<?php endforeach; ?>"

Digo isso porque as URLs de detalhe não fazem sentido, faria mais sentido ter algo como:

<?php foreach ($lista as $linha): ?>
    <tr>
        <td><a href="/categorias-detalhe.php?id=<?php echo $linha['id'] ?>" class="btn btn-link">
                <?php echo $linha['nome'] ?></a></td>
        <td><a href="/categorias-editar.php?id=<?php echo $linha['id'] ?>" class="btn btn-info">Editar</a></td>
        <td><a href="/categorias-deletar.php?id=<?php echo $linha['id'] ?>" class="btn btn-danger">Excluir</a></td>
    </tr>
<?php endforeach; ?>"

Pode ser visto que os IDs do Editar e Excluir não foram preenchidos, assim como a falta de uma barra no endereço do detalhe e se $categoria->nome e $categoria->id tivessem um valor padrão a tabela seria muito inútil, exibindo o mesmo nome e id para todas as categorias.