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
classControle{publicfunction 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";(newControle)->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.
Pergunta
Frank K Hosaka
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:
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
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.