OO que pode ser adaptada ao CI

abs Edinho

<?php

//CI class Caixa extends Model{
class Caixa{

  private $caixa_atual = 0;
  private $quantidade = 0;
  private $produtos = array();
  private $capacidade = 15;
  private $yaml = "";

   function __construct()
    {
        //CI parent::Model();
    $this->yaml = "Caixa {$this->caixa_atual}:\n";
    }

  function add_produto($tipo, $qtd=1){
    //verifica se a caixa atual está cheia
    if($this->quantidade >= $this->capacidade){
      $this->grava();
    }

    //ve quantos cabem na caixa
    $temlugar = $this->capacidade - $this->quantidade;

    //quantos vai inserir
    $insere = ($qtd > $temlugar) ? $temlugar : $qtd;

    //insere
    $this->produtos[$tipo] = (isset($this->produtos[$tipo])) ?
$this->produtos[$tipo]+$insere : $insere;
    $this->quantidade += $insere;

    //se sobraram recomeca
    if($qtd>$insere){
      $this->add_produto($tipo,$qtd-$insere);
    }
  }

  function grava(){
    $data['str'] = '';
    foreach($this->produtos as $key=>$val){
      $data['str'] .= "{$key}:{$val}\n";
      $this->yaml .="\t{$key}:{$val}\n";
    }
    $data['id'] = $this->caixa_atual;

    //grava no bd
    //CI $this->db->set($data)->insert('caixas');

    //incrementa
    $this->caixa_atual++;
    $this->yaml .= "Caixa {$this->caixa_atual}:\n";
    //zera
    $this->quantidade = 0;
    $this->produtos =  array();
  }
  function __destruct(){
    if($this->quantidade>0){
      $this->grava();
    }
    echo $this->yaml;
  }

}

$objeto_caixas = new Caixa;
$objeto_caixas->add_produto('produto a',10);
$objeto_caixas->add_produto('produto b',43);
$objeto_caixas->add_produto('produto c',2);
$objeto_caixas->add_produto('produto d',20);
$objeto_caixas->add_produto('produto e',10);
$objeto_caixas->add_produto('produto f',10);
$objeto_caixas->add_produto('produto g',6);
$objeto_caixas->add_produto('produto h',54);

?>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a