When I need to use database information for more than one task, what is the best solution for object orientation (eg list the products in a cart and perform calculations):
1 - Create a single method that already does everything (1 bank access and 1 while)
// recupera a lista de produtos do banco
$lista_produtos = $carrinho->listar_produtos();
// percorre os produtos e realiza as tarefas necessarias
while($carrinho_produto = $lista_produtos)
{
$valor_produto = $carrinho_produto ->valor * $carrinho_produto ->quantidade;
$valor_frete += $valor_produto * $fator_frete;'insira o código aqui'
$valor_total += $valor_produto;
}
2 - Create 3 methods and list the products in each of them, consequently making more access to the bank (1 access to the bank by method and multiple while).
$carrinho->calcular_preco();
$carrinho->calcular_frete();
$carrinho->calcular_valor_total();
3 - Retrieve the list of products from the database, store in a vector, pass the vector in all methods (1 access to the database and multiple while)
$vetor_produtos = $carrinho->listar_produtos();
$carrinho->calcular_preco( $vetor_produtos );
$carrinho->calcular_frete( $vetor_produtos );
$carrinho->calcular_valor_total( $vetor_produtos );