Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Função para os $_POST

olá,

para evitar repetição de código, gostaria de utilizar uma função para ser chamada toda vez que eu precisar obter informações dos $_POST.

O problema é que não estou conseguindo fazer com que as variáveis sejam visíveis. Fiz um pequeno exemplo mas dá erro:

public function getPost() : void 
    {
        $source = array('.', ',');
        $replace = array('', '.');

        global $data_vencimento;
        global $observacao;

        $data_vencimento = $_POST['data_vencimento'] ?? NULL;
        $observacao = $_POST['observacao'] ?? "";
    }

    public function addContaPagarPost() {    

        $this->getPost();

        echo("DATA DE VENCIMENTO: ".$data_vencimento);
        echo("<br/>");
        echo("OBSERVAÇÃO: ".$observacao);
        die();
    }

recebo o seguinte erro:

Notice: Undefined variable: data_vencimento in D:\xampp\htdocs\PortPar\controllers\contasPagarController.php on line 415
DATA DE VENCIMENTO: 

Notice: Undefined variable: observacao in D:\xampp\htdocs\PortPar\controllers\contasPagarController.php on line 417
OBSERVAÇÃO:

Alguém tem alguma ideia onde estou errando? Ou se é possível fazer algo desse tipo?

Obrigado!

2 respostas
solução

Tente fazer da seguinte forma:

class MinhaClasse {

    private $data_vencimento;
    private $observacao;

    public function getPost() : void   {
        if (isset($_POST['data_vencimento'])){
            $this->data_vencimento = $_POST['data_vencimento'];
        }
        if (isset($_POST['observacao'])){
            $this->observacao = $_POST['observacao'];
        }
    }

    public function addContaPagarPost() {    

        $this->getPost();

        echo("DATA DE VENCIMENTO: ".$this->data_vencimento);
        echo("<br/>");
        echo("OBSERVAÇÃO: ".$this->observacao);
        die();
    }

}    

Olá Daniel, Funcionou!

Para eu reduzir ainda mais o código, porque dessa maneira eu estou repetindo os atributos na classe usada para controller, eu poderia popular entao os tributos da classe usada para model (que faz insert, update e delete no banco) e não precisar de declarar os atributos duas vezes, o que acha?

public function getPost() : void 
    {

        $conta = new Conta();
        $conta->data_vencimento = $_POST['data_vencimento'] ?? NULL;
        $conta->observacao = $_POST['observacao'] ?? "";

    }

    public function addContaPagarPost() {    

        $this->getPost();
        $conta->insert();     // faria o PDO | prepare | execute
    }