Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Retornar dados de uma classe Bom dia amigos, eu tenho a seguinte classe que executa calculos no banco de dados atravez de uma view, meu problema e retornar os dados resultantes dessa view, sou programador pascal kkkkk ...
FP
Retornar dados de uma classe  
Bom dia amigos, eu tenho a seguinte classe que executa calculos no banco de dados atravez de uma view,
meu problema e retornar os dados resultantes dessa view, sou programador pascal kkkkk

  1. <?php
  2. class vw_saldoclientedinheiro extends TPage
  3. {
  4.     public function __construct($param)
  5.     {
  6.         parent::__construct();
  7.         try
  8.         {
  9.             //print_r($param['empresa_id']);            
  10.             TTransaction::open('permission'); // abre uma transação 
  11.             $conn TTransaction::get(); // obtém a conexão 
  12.             
  13.             $sth $conn->prepare('SELECT valor,fino from vw_saldoclientedinheiro
  14.                                    WHERE empresa_id = ? AND pessoa_id = ?');             
  15.             $sth->execute(array($param['empresa_id'],$param['pessoa_id']));            
  16.             $result $sth->fetchAll(); //
  17.             //print_r($result);
  18.             return $result;
  19.             
  20.             TTransaction::close(); // fecha a transação.
  21.             
  22.         }
  23.         catch (Exception $e)
  24.         {
  25.             new TMessage('error'$e->getMessage());
  26.         }
  27.     }
  28. }
  29. ?>


$array = ['empresa_id'=>$empresa_id,'pessoa_id'=>$pessoa_id]; aqui passo dados para o array
$qrsaldo = new vw_saldoclientedinheiro($array); //aqui instancio a classe passando o array como parâmetros,

Imaginei eu na minha cabeça arcaica de programador fluente em pascal que eu estaria recebendo no $qrsaldo um array com o resultado dessa view porem não e isso que esta acontecendo, alguém pode me dar uma luz no fim do túnel.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (5)


NR

Fernando, o construtor de uma classe sempre retorna a própria classe. Crie outra função para retornar estes valores.
Também sugiro criar um model para esta view.
FP

Nataniel Rabaioli.
Vou fazer o teste com a model tbm já havia pensado nisso porém por questões de conhecimento gostaria de saber como retornar isso de uma classe, pode me dar uma exemplo ai de como seria o correto para essa minha classe retornar um array ow uma lista de objetos?
NR

Fernando, é só criar outra função:
  1. <?php
  2. class vw_saldoclientedinheiro extends TPage
  3. {
  4.     public function getSaldo($param)
  5.     {
  6.         try
  7.         {
  8.             //print_r($param['empresa_id']);            
  9.             TTransaction::open('permission'); // abre uma transação 
  10.             $conn TTransaction::get(); // obtém a conexão 
  11.             
  12.             $sth $conn->prepare('SELECT valor,fino from vw_saldoclientedinheiro
  13.                                    WHERE empresa_id = ? AND pessoa_id = ?');             
  14.             $sth->execute(array($param['empresa_id'],$param['pessoa_id']));            
  15.             $result $sth->fetchAll(); //
  16.             //print_r($result);
  17.             return $result;
  18.             
  19.             TTransaction::close(); // fecha a transação.
  20.             
  21.         }
  22.         catch (Exception $e)
  23.         {
  24.             new TMessage('error'$e->getMessage());
  25.         }
  26.     }
  27. $array = ['empresa_id'=>$empresa_id,'pessoa_id'=>$pessoa_id];
  28. $class = new vw_saldoclientedinheiro();
  29. $qrsaldo $class->getSaldo($array);
  30. ?>


Nesse exemplo eu só substitui a função __construct pela função getSaldo, pois a construct não pode ser utilizada para retornar valores.
FP

Bom dia Nataniel Rabaioli.
Sua dica funcionou porém tive problemas para receber o array, precisei fazer dessa maneira

  1. <?php
  2. class vw_saldoclientedinheiro extends TPage
  3. {
  4.     public function getSaldo($param)
  5.     {
  6.         try
  7.         {
  8.             //print_r($param['empresa_id']);            
  9.             TTransaction::open('permission'); // abre uma transação 
  10.             $conn TTransaction::get(); // obtém a conexão 
  11.             
  12.             $sth $conn->prepare('SELECT valor,fino from vw_saldoclientedinheiro
  13.                                    WHERE empresa_id = ? AND pessoa_id = ?');             
  14.             $sth->execute(array($param['empresa_id'],$param['pessoa_id']));
  15.             //$sth->execute(array(1,4));
  16.             $result $sth->fetchAll(); //
  17.             //print_r($result);
  18.             foreach ($result as $row)
  19.             {
  20.                 /*
  21.                 print $row['valor'] . '-' . $row['fino'];
  22.                 */
  23.                 $array['valor'] = $row['valor'];
  24.                 $array['fino']  = $row['fino'];
  25.                 
  26.             }
  27.             return $array;
  28.             
  29.             TTransaction::close(); // fecha a transação.
  30.             
  31.         }
  32.         catch (Exception $e)
  33.         {
  34.             new TMessage('error'$e->getMessage());
  35.         }
  36.     }
  37. }
  38. ?>

agora gostaria de saber o motivo pelo qual eu nao posso simplesmente dar um
$result = $sth->fetchAll(); //
//print_r($result);
return $result;
usando apenas um return no resultado do fetchAll() ele não me permite acessar os índices do array, ate acesso mas apenas dentro da função da classe, quando retorno isso pra outra classe da erro, por questões de entendimento gostaria de saber o motivo.
NR

Fernando, fiz o teste aqui retornando $result e funcionou normal.