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

Fatal error: Uncaught TypeError: Artigo::encontrarPorId():

As páginas criadas pelo artigo.php estão dando erro

artigo.php

<?php

require 'config.php';
require 'src/Artigo.php';

$obj_artigo = new Artigo($mysql);
$artigo = $obj_artigo->encontrarPorId($_GET['id']);

?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <title>Meu Blog</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
    <div id="container">
        <h1>
            <?php echo $artigo['titulo']; ?>
        </h1>
        <p>
            <?php echo $artigo['conteudo']; ?>
        </p>
        <div>
            <a class="botao botao-block" href="index.php">Voltar</a>
        </div>
    </div>
</body>

</html>

Código da classe: Artigo.php

<?php

class Artigo
{
    private $mysql;

    public function __construct(mysqli $mysql)
    {
        $this->mysql = $mysql;
    }

    public function exibirTodos(): array
    {

        $resultado = $this->mysql->query('SELECT id, titulo, conteudo FROM artigos');
        $artigos = $resultado->fetch_all(MYSQLI_ASSOC);

        return $artigos;
    }

    public function encontrarPorId(string $id): array
    {
        $selecionaArtigo = $this->mysql->prepare("SELECT id, titulo, conteudo FROM artigos WHERE id = ?");
        $selecionaArtigo->bind_param('s', $id);
        $selecionaArtigo->execute();
        $artigo = $selecionaArtigo->get_result()->fetch_assoc();
        return $artigo;
    }
}

Desde já agradeço a ajuda!

1 resposta
solução!

Existem três cenários em que um TypeError pode ser lançado. O primeiro é quando o tipo do argumento passado a uma função não combina com o tipo do parâmetro declarado. O segundo é quando o valor retornado de uma função não combina com o tipo de retorno declarado. O terceiro é quando um número de argumentos inválidos são passados a uma função built-in do PHP (somente no modo restrito).

Provavelmente o tipo de dado que está passando (em encontrarPorId) não é string, vê se resolve.

Referência: https://www.php.net/manual/pt_BR/class.typeerror.php