PHP - Coleção de Objetos

Iniciado por Zeox, 30 de Março de 2012, 21:38

tópico anterior - próximo tópico

Zeox

Boas noites povo, estou estudando PHP e caçando daqui, caçando dali não achei os métodos para fazer coleção de objetos(existe?), sendo assim, resolvi arregaçar as mangas e fazer uma classe para isso, segue o código. (ps: não sei ainda se contem erros, fiz poucos testes)

<?php

/*
@author Ricardo
*/
class Colecao {
   public
$objeto = array();
   public
$j=0;
   
   
   public function
addObj($n){
       
$this->objeto[$this->j++] = $n;

   }
 
  public function
getPrimeiroObj(){
      return
$this->objeto[0];
  }
 
  public function
getUltimoObj(){
      return
$this->objeto[$this->j];
  }
  public function
getEscolhaObj($n){
      if(
$this->j>$n)
          return
$this->objeto[$n];
      else return
false;

  }
  public function
getSize(){
      return
$this->j;
  }  
 
   public function
removerLista(){
       
$this->objeto=null;
       
$this->j=0;
  }
 
  public function
removerPrimeiroObj(){
      if(
$this->j==1){
         
self::removerLista();
      }
      else{
          for(
$i=0;$i<self::getSize()-1;$i++){
             
$prox=$i+1;
             
$this->objeto[$i] = $this->objeto[$prox];

           }
           
$this->objeto[$prox]=null;
           
$this->j--;
      }

  }    
 
  public function
removerUltimoObj(){
     
$this->objeto[$this->j]=null;
      --
$this->j;
  }
 
  public function
removerObjEcolhido($n){
       if(
self::vazia());
       else if(
$this->j-1==0)
           
self::removerLista();
      else{
          for(
$i=$n;$i<self::getSize()-1;$i++){
             
$prox=$i+1;
             
$this->objeto[$i] = $this->objeto[$prox];

           }
           
$this->objeto[$i]=null;
           
$this->j--;
      }
  }
 
     public function
vazia(){
      if(
$this->j==0)
          return
true;
      else
          return
false;
  }
 
  public function
ordena(){
     
sort($this->objeto);
  }
               
}

?>

GiovanniVM

Existe.

Já tentou array:

<?
...

$caixa = new Caixa();
$item = new Item();

for($i = 0; $i < 5; $i++){
$caixa->addItem($item);
}

...
?>

e dentro da classe Caixa:

<?
...

function addItem($item){
$this->item[] = $item;
}

...
?>
--> Giovanni Vi. Mor. <--

irtigor

Sem um contexto fica difícil de saber, mas você feriu o principio de encapsulamento. Também não vejo "j" como uma variável de classe (atributo).

gaseabra

Pessoal, procurem um fórum específico para PHP. Aqui é lugar de falar de Ubuntu Linux.
Linux user #545235 / Distros: Zorin OS 5.2, Linux Mint 12.