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.