Ir para conteúdo
Fórum Script Brasil
  • 0

Como as classes do PHP funcionam?


Frank K Hosaka

Pergunta

Eu fui pegando alguns códigos aqui e outros ali que usavam o rótulo de MVC ou POO, e consegui fazer funcionar o meu projeto. O fato do meu projeto funcionar não implica que eu sei o que é MVC ou POO, muito pelo contrário. Assim eu achei mais justo chamar o meu projeto de POG, Programa Orientado à Gambiarra.

Veja o meu drama:

Arquivo Index.php
<?php

class Controle 
{
    public function view($arquivo, $array = null)
    {
        if (!is_null($array)) 
        {
            foreach ($array as $var => $value) 
            {
                ${$var} = $value;
            }
        }
        ob_start();
        include $arquivo . ".php";
        ob_flush();
    }
}

$teste="meu nome é frank";
(new Controle)->view('visao');

Arquivo visao.php
<h1><?=$teste?></h1>

Esse programa não funciona, o PHP reclama que a variável $teste não foi definida.

Para fazer esse programa funcionar, eu tenho que usar um array, assim:

(new controle)->view(visao,['teste'=>$teste]);

Desde que comecei a mexer com as classes, eu não consegui entender a lógica. Se eu defini $teste no index.php, por que o visão.php não consegue enxergá-lo?

Eu fiquei imaginando que o problema é a função ob_start( ) e o ob_flush( ). Já li umas dezes vezes o manual, e não sei o que ele é e para que serve.

Como eu não sei a quem pedir ajuda (a Gemini só repete a mesma coisa que está no manual), o único jeito de resolver o problema é usar o poderoso método científico da tentativa e erro. Eu joguei fora essas funções, e o programa continua funcionando do mesmo jeito.

Mas hoje, dia 15 de março de 2024, na hora que comecei a escrever essa mensagem, eu descobri porque o arquivo visão.php não enxerga a variável $teste que eu defini no index.php. É que o arquivo visão não foi chamado pelo arquivo index.php, mas sim por uma classe, e nenhuma classe é obrigada a saber o que o usuário andou definindo antes dela ser chamada.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1

É interessante ver sua jornada de aprendizado na programação e como você está lidando com os desafios. O uso de classes e conceitos como MVC e POO pode ser complexo no início, mas com o tempo e a prática, você vai se familiarizando mais com eles. Quanto à sua descoberta sobre a variável $teste não ser reconhecida no arquivo visao.php, isso ocorre porque o escopo das variáveis em PHP é limitado ao arquivo ou à função em que são definidas. Quando você inclui o arquivo visao.php dentro da função view() da classe 1Controle, ele não tem acesso à variável $teste definida no arquivo index.php, a menos que seja passada explicitamente como um parâmetro para a função view(). Se precisar de mais ajuda com seus projetos ou com conceitos específicos de programação, eu e meus amigos com pachinko ficaremos felizes em ajudar!

Editado por CrazyVom12
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...