1
resposta

Como usar o valor de uma variável de uma função em outra função dentro de uma classe.

 Tenho a classe ContaDao e dentro desta classe tenho duas funções parametrosPaginacao() e listaContas($mes, $ano).

Na função listaContas uso 2 variavies da função parametrosPaginacao(), gostaria de saber como pegar os valores das variáveis $inicio e $quantidade_pg.

Segue o codigo da classe:

<?php class ContaDao{

private $conexao;

function parametrosPaginacao(){

//Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

//Selecionar todos as contas da tabela $result_conta = "select * from copag where copag_ano = {$ano} and copag_mes = {$mes}"; $resultado_conta = mysqli_query($this->conexao, $result_conta);

//Contar o total de contas $total_contas = mysqli_num_rows($resultado_conta);

//Seta a quantidade de contas por pagina $quantidade_pg = 9;

//calcular o número de pagina necessárias para apresentar os contas $num_paginas = ceil($total_contas/$quantidade_pg);

//Calcular o inicio da visualizacao $inicio = ($quantidade_pg*$pagina)-$quantidade_pg;

}

function listaContas($mes, $ano){

$listaDeContas = array();

$resultado = mysqli_query($this->conexao, "SELECT c.copag_id, c.copag_mes, c.copag_ano, c.copag_dt_vencto, c.copag_descricao, c.copag_valor, c.copag_nr_doc, c.copag_parcela, c.tipopagto_id, t.tipopagto_descricao, CASE c.copag_status WHEN 'P' THEN 'Pago' ELSE 'Em Aberto' END as copag_status FROM copag c, tipopagto t WHERE c.tipopagto_id = t.tipopagto_id AND c.copag_ano = {$ano} AND c.copag_mes = {$mes} ORDER BY c.copag_dt_vencto limit {$inicio}, {$quantidade_pg}");

while ($conta_array = mysqli_fetch_assoc($resultado)) { $conta = new Conta(); $tipopagto = new TipoPagto(); $tipopagto->tipopagto_descricao = $conta_array['tipopagto_descricao'];

$conta->copag_id = $conta_array['copag_id']; $conta->copag_mes = $conta_array['copag_mes']; $conta->copag_ano = $conta_array['copag_ano']; $conta->copag_dt_vencto = $conta_array['copag_dt_vencto']; $conta->copag_descricao = $conta_array['copag_descricao']; $conta->copag_valor = $conta_array['copag_valor']; $conta->copag_nr_doc = $conta_array['copag_nr_doc']; $conta->copag_parcela = $conta_array['copag_parcela']; $conta->tipopagto = $tipopagto; $conta->copag_status = $conta_array['copag_status'];

array_push($listaDeContas, $conta); } return $listaDeContas; }

} ?>
1 resposta

Olá Ari, na função parametrosPaginacao você tem que retornar os dados desejados em forma de array.

A função listaContas deve chamar a função parametrosPaginacao e receber seu retorno, você pode usar esses dados da forma que o Juliano Fischer disse ou usar a função list do php (http://php.net/list) para atribuir o retorno nas variáveis que desejar.

Segue o ajuste no código:

<?php

class ContaDao
{
    private $conexao;

    function parametrosPaginacao($ano, $mes)
    {
        // Verificar se está sendo passado na URL a página atual, senao é atribuido a pagina
        $pagina = (isset($_GET['pagina'])) ? $_GET['pagina'] : 1;

        // Selecionar todos as contas da tabela
        $result_conta = "select * from copag where copag_ano = {$ano} and copag_mes = {$mes}";
        $resultado_conta = mysqli_query($this->conexao, $result_conta);

        // Contar o total de contas
        $total_contas = mysqli_num_rows($resultado_conta);

        // Seta a quantidade de contas por pagina
        $quantidade_pg = 9;

        // calcular o número de pagina necessárias para apresentar os contas
        $num_paginas = ceil($total_contas / $quantidade_pg);

        // Calcular o inicio da visualizacao
        $inicio = ($quantidade_pg * $pagina) - $quantidade_pg;

        return [$inicio, $quantidade_pg];
    }

    function listaContas($mes, $ano)
    {
        list($inicio, $quantidade_pg) = $this->parametrosPaginacao($ano, $mes);

        $listaDeContas = array();

        $resultado = mysqli_query($this->conexao,
            "SELECT c.copag_id, c.copag_mes, c.copag_ano, c.copag_dt_vencto, c.copag_descricao, c.copag_valor, c.copag_nr_doc, c.copag_parcela, c.tipopagto_id, t.tipopagto_descricao, CASE c.copag_status WHEN 'P' THEN 'Pago' ELSE 'Em Aberto' END as copag_status 
FROM copag c, tipopagto t 
WHERE c.tipopagto_id = t.tipopagto_id AND c.copag_ano = {$ano} 
AND c.copag_mes = {$mes} 
ORDER BY c.copag_dt_vencto limit {$inicio}, {$quantidade_pg}"
        );

        while ($conta_array = mysqli_fetch_assoc($resultado)) {
            $conta = new Conta();
            $tipopagto = new TipoPagto();
            $tipopagto->tipopagto_descricao = $conta_array['tipopagto_descricao'];

            $conta->copag_id = $conta_array['copag_id'];
            $conta->copag_mes = $conta_array['copag_mes'];
            $conta->copag_ano = $conta_array['copag_ano'];
            $conta->copag_dt_vencto = $conta_array['copag_dt_vencto'];
            $conta->copag_descricao = $conta_array['copag_descricao'];
            $conta->copag_valor = $conta_array['copag_valor'];
            $conta->copag_nr_doc = $conta_array['copag_nr_doc'];
            $conta->copag_parcela = $conta_array['copag_parcela'];
            $conta->tipopagto = $tipopagto;
            $conta->copag_status = $conta_array['copag_status'];

            array_push($listaDeContas, $conta);
        }

        return $listaDeContas;
    }

}