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

POG como pegar o input do usuário


Frank K Hosaka

Pergunta

Não tive sorte com a Gemini e nem com o motor de busca do Google, não consegui achar um código exemplo onde o MVC pega os dados do usuário.

Eu mesmo fiz um teste, imaginando que o objeto ficava escondido na memória RAM, e ele iria aparecer na hora que eu precisasse. Foi uma completa besteira.

Eu pensei em deletar o projeto, mas eu fiquei imaginando em mudar o esquema. O controle chama o view, mas com o seu nome. E o view devolve o input do usuário mas com o nome do controlador.

A gambiarra deu certo, pelo menos no mini projeto que eu fiz, olha só:

Arquivo Index.php
<?php
class candidato 
{
    public function __construct()
    {   
        if(isset($_GET['candidato']))
        {
            echo "o nome do canidato é " . $_GET['candidato']. "<br>";
            (new cliente);
            exit;
        }
        $rota="candidato";
        return require 'view.php';
    }

}

class cliente
{
    public function __construct()
    {   
        if(isset($_GET['cliente']))
        {
            echo "o nome do cliente é " . $_GET['cliente'];
            exit;
        }
        $rota="cliente";
        return require 'view.php';
    }
}

if($_GET)
{
    $controle=key($_GET);
    (new $controle);
}
(new candidato);


Arquivo view.php
<form>
Nome do <?=$rota?> <input name='<?=$rota?>'>
<input type=submit>
</form>

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Sua abordagem para integrar o MVC e capturar dados do usuário é criativa e mostra que você está explorando diferentes maneiras de estruturar seu código! No entanto, para seguir mais de perto os princípios do MVC (Model-View-Controller), você pode considerar separar as responsabilidades de forma mais clara, garantindo que cada parte do seu sistema tenha um propósito definido. Aqui vai uma sugestão de como estruturar o código mantendo a separação de responsabilidades:

// Arquivo index.php
class Controller {
    public function getUserInput() {
        if(isset($_GET['action'])) {
            $action = $_GET['action'];
            $this->$action();
        }
    }

    private function candidato() {
        $nome = $_GET['candidato'] ?? null;
        if($nome) {
            echo "O nome do candidato é " . $nome . "<br>";
        }
        $this->loadView('candidato');
    }

    private function cliente() {
        $nome = $_GET['cliente'] ?? null;
        if($nome) {
            echo "O nome do cliente é " . $nome . "<br>";
        }
        $this->loadView('cliente');
    }

    private function loadView($viewName) {
        require 'view.php';
    }
}

$controller = new Controller();
$controller->getUserInput();

// Arquivo view.php
if(isset($viewName)) {
    echo "<form>Nome do {$viewName}: <input name='{$viewName}'> <input type='submit'></form>";
}

Esse exemplo de código escrito por meu colega da king slots implementa um esquema MVC em que o controlador lida com a lógica de decisão e a invocação de visualização, e o arquivo de visualização se concentra na visualização de dados. Observe que usei métodos privados no controlador para lidar com as ações de "candidato" e "cliente" e um método loadView para carregar a visualização apropriada. Isso centraliza o controle e facilita a manutenção futura.

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

  • 0
8 horas atrás, BigMammut97 disse:

Sua abordagem para integrar o MVC e capturar dados do usuário é criativa e mostra que você está explorando diferentes maneiras de estruturar seu código! No entanto, para seguir mais de perto os princípios do MVC (Model-View-Controller), você pode considerar separar as responsabilidades de forma mais clara, garantindo que cada parte do seu sistema tenha um propósito definido. Aqui vai uma sugestão de como estruturar o código mantendo a separação de responsabilidades:

// Arquivo index.php
class Controller {
    public function getUserInput() {
        if(isset($_GET['action'])) {
            $action = $_GET['action'];
            $this->$action();
        }
    }

    private function candidato() {
        $nome = $_GET['candidato'] ?? null;
        if($nome) {
            echo "O nome do candidato é " . $nome . "<br>";
        }
        $this->loadView('candidato');
    }

    private function cliente() {
        $nome = $_GET['cliente'] ?? null;
        if($nome) {
            echo "O nome do cliente é " . $nome . "<br>";
        }
        $this->loadView('cliente');
    }

    private function loadView($viewName) {
        require 'view.php';
    }
}

$controller = new Controller();
$controller->getUserInput();

// Arquivo view.php
if(isset($viewName)) {
    echo "<form>Nome do {$viewName}: <input name='{$viewName}'> <input type='submit'></form>";
}

Esse exemplo mantém o fluxo MVC, onde o Controller manipula a lógica de decisão e a chamada de views, enquanto o arquivo de View se concentra na apresentação dos dados. Note que utilizei métodos privados dentro do Controller para tratar as ações de 'candidato' e 'cliente', e um método loadView para carregar a view correspondente. Isso mantém o controle centralizado e facilita manutenções futuras.

Eu ainda não tenho menor ideia do que seja distribuição de responsabilidade, mas para usar um view por vários métodos diferentes, eu inventei o POG, ou seja, tentativa e erro até funcionar:

Arquivo Index.php
<?php

class Controller {

    public function getUserInput() 
    {
        
        if($_GET)
        {
            $metodo = key($_GET)=='pergunta' ? $_GET[key($_GET)] : key($_GET);
            $parametro= key($_GET)!=='pergunta' ? $_GET[$metodo] : null;
            return $this->$metodo($parametro);
        }
        $this->loadview('candidato ou cliente?','pergunta');
    }

    private function candidato($parametro) 
    {
        $nome = $parametro ?? null;
        if($nome) 
        {
            echo "O nome do candidato é " . $nome . "<hr><br>";
            $_GET=null;
            return $this->getUserInput();
        }
        $this->loadView('nome do candidato?','candidato');
    }

    private function cliente($parametro) 
    {
        $nome = $parametro ?? null;
        if($nome) 
        {
            echo "O nome do cliente é " . $nome . "<hr><br>";
            $_GET=null;
            return $this->getUserInput();
        }
        $this->loadView('nome do cliente?','cliente');
    }

    private function loadView($mensagem,$metodo) 
    {
        require 'view.php';
    }
}
(new Controller)->getUserInput();


Arquivo view.php
<form>
    <?=$mensagem?>
    <input name=<?=$metodo?>> 
    <input type='submit'>
</form>

 

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...