Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2011, 05:04
zonaunlock
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Información splobjectstorage o mi clase ("arrObjetos")??? aqui se las dejo a quien le interese...

Hola splObjectStorage me dio muchos problemas debido a esto decidi hacer mi propio objeto para almacenar otros objetos :) aqui se las dejo lo mejor es que todo las funciones van en español algunas dudas por favor pregunten...

Código PHP:
/*codigo desarrollado por gomosft 2011 */
class arrObjetos{
    private 
$obj= array();
    private 
$tmp;
    private 
$flujo;
    var 
$cab;
    function 
arrObjetos(){
        
$this->tmp=-1;
    }
    
    public function 
cuantos(){
     return 
count($this->obj);
    }
    
    public function 
agrega($obj){
        if(
is_object($obj)){
            
$this->tmp++;
            
$this->obj[]=$obj;
            
$this->cab=$this->obj[$this->tmp];
            
$this->flujo=$this->tmp;
            return;
        }
        echo 
"el parametro recibido no es un objeto";
    }

    public function  
ant(){
        if((
$this->flujo-1) > 0){
        
$this->cab=$this->obj[($this->tmp-1)];    
        
$this->flujo=$this->flujo-1;
        return 
$this->obj[$this->flujo];
        }else{ 
$this->flujo=0;$this->cab=$this->obj[$this->flujo]; return $this->obj[$this->flujo];} 
        
        echo 
"indice Fuera de limites ".$this->tmp--;
    }
    
    public function  
sig(){
        
        if(
$this->tmp++ < count($this->obj)-1){
        
$this->flujo=$this->flujo++;    
        
$this->cab=$this->obj[($this->flujo)];            
        return 
$this->obj[$this->flujo];}
        else{
$this->flujo=count($this->obj)-1$this->cab=$this->obj[$this->flujo]; return($this->obj[$this->flujo]);}
                           
        echo 
"indice Fuera de limites ".$this->tmp++;
    }
    
    public function 
fin(){
        
$this->flujo=count($this->obj)-1;
        
$this->cab=$this->obj[$this->flujo];
    }
    
    public function 
ini(){
        
$this->flujo=0;
        
$this->cab=$this->obj[$this->flujo];
    }
    
    public function 
lotengo($obj){
      
$tmp=$this->flujo;
      
$this->flujo=0;
      if(!
is_object($obj)){
        echo(
"el parametro recibido no es un objeto");
        return;
      }
      
$cab=$this->obj[$this->flujo];
       while(
$this->sig() != $cab){
         if(
$cab==$obj)
           return 
true;
        
$cab=$this->sig();
      }
      if(
$cab==$obj){
        return 
true;
      }
    
$this->flujo=$tmp;    
  return 
false;
 }
}

class 
testear{
 var 
titulo;
   function 
testear($ti){
      
$this->titulo=$ti;
    }
}

/*implementando la clase instanciamos 2 objeto tipo testear*/
$tes=new testear("hola");
$tes1=new testear("chao");

/*instanciamos objeto de tipo arrObjetos*/
$arrobj=new arrObjetos();

/*agregamos los objetos de tipo testear*/
$arrobj->agregar($tes);
$arrobj->agregar($tes1);

/*la variable cab por defecto esta apuntando al ultimo elemto pero podemos cambiar su posicion con las funciones o metodos 
ini() nos lleva al primer objeto de la lista 
fin() nos lleva al ultimo elemento de la lista
sig() nos lleva al objeto proximo de cab en la lista
ant() nos lleva al objeto anterior de cab en la lista

echo $arrobj->cab->titulo;

/*coloco a prueba un metodo*/
 
$arrobj->ant();

echo 
$arrobj->cab->titulo;

/* implementamos el metodo lotengo() que busca un objeto en la lista */

if($arrobj->lotengo($tes))
 echo (
"efectivamente tengo este objeto en mi composicion"); 
seguire mejorando la clase proximamente vendrá el metodo eliminar y varios bye y saludes a todos.....