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");