Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

coleccion de objetos

Estas en el tema de coleccion de objetos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. tengo una clase(Almacen) que tiene una coleccion de Productos, ahora bien como represento eso en php _??...
  #1 (permalink)  
Antiguo 04/05/2008, 18:32
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
coleccion de objetos

tengo una clase(Almacen) que tiene una coleccion de Productos, ahora bien como represento eso en php _??
  #2 (permalink)  
Antiguo 05/05/2008, 00:12
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: coleccion de objetos

rrrrmm... si tienes una clase dominas objetos... o ejemplo

Código PHP:
 $almacen = new almacen();
 
 
// [ID_PRODUCTO] , [TIPO PRODUCTO]
 
$almacen->consultarProducto('1','viveres');
 
$almacen->imprimir(); 
Bueno las clase se definen como métodos y atributos

los métodos son las funciones y los atributos los valores que seran modificados por los métodos...
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #3 (permalink)  
Antiguo 05/05/2008, 06:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

mira lo que no se es como representarlo, es decir como pongo un atributo(Lista) en la clase Almacen del tipo Producto ??

en C# por ejemplo lo hacia de esta forma:
class Almacen {
private List<Prducto> miLista = new List<Producot>();
.....
}
  #4 (permalink)  
Antiguo 05/05/2008, 06:25
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: coleccion de objetos

Mira algo asi ...

Código PHP:

<?php
class Persona {
  protected 
$nombre;
  protected 
$edad;
  public function 
__construct($nom,$ed)
  {
    
$this->nombre=$nom;
    
$this->edad=$ed;
  }
  public function 
imprimirDatosPersonales()
  {
    echo 
'Nombre:'.$this->nombre.'<br>';
    echo 
'Edad:'.$this->edad.'<br>';
  }
}

class 
Empleado extends Persona{
  protected 
$sueldo;
  public function 
__construct($nom,$ed,$su)
  {
    
parent::__construct($nom,$ed);
    
$this->sueldo=$su;
  }
  public function 
imprimirSueldo()
  {
    echo 
'Sueldo:'.$this->sueldo.'<br>';
  }
}

$persona1=new Persona('Rodriguez Pablo',24);
echo 
'Datos personales de la persona:<br>';


$persona1->imprimirDatosPersonales();
$empleado1=New Empleado('Gonzalez Ana',32,2400);

echo 
'Datos personales y sueldo del empleado:<br>';
$empleado1->imprimirDatosPersonales();

$empleado1->imprimirSueldo();
?>
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #5 (permalink)  
Antiguo 05/05/2008, 07:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: coleccion de objetos

Unejemplo de colección de objetos:
Código PHP:
        $collection = new SplObjectStorage();

        foreach(
$this->getStoreService()->getProducts($currentCategoryId) as $product){
            
$collection->attach(new Product($product));
        }

              
$this->view->assign('productList'$collection); 
  #6 (permalink)  
Antiguo 05/05/2008, 08:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: coleccion de objetos

Solo para complementar, en si una colección es un arreglo, así que puedes usar un arreglo como objeto base para guardar la colección si se te hace muy complejo usar SPL.

Saludos.
  #7 (permalink)  
Antiguo 05/05/2008, 09:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

gracias zsamer.. echaré un vistaso a SPL, aunke estoy foljo en php aun..

GatorV, me puedes dar un ejemplo con arrays, creo ke con este lo entenderia mejor...
  #8 (permalink)  
Antiguo 05/05/2008, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: coleccion de objetos

Código PHP:
class Collection {
       private 
$collection = array();
       public 
addToCollection$object ) {
                
$this->collection[] = $object;
       }
}

$coll = new Collection();
while( 
$i 10 ) {
      
$obj = new StdObject();
      
$coll->addToCollection($obj);
      
$i++;

Saludos.
  #9 (permalink)  
Antiguo 06/05/2008, 07:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

porque me da error el siguiente codigo la parte que esta en rojo..

class Recursos {
private $listadoPersnoa;
private $cantReal;

function __construct() {
$this->listadoPersnoa = new Collection();
}

function addPersona(Persona $per) {
$this->listadoPersnoa->Addicionar($per)

}
  #10 (permalink)  
Antiguo 06/05/2008, 07:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: coleccion de objetos

Es difícil saber, sin saber el código de Collection ni el mensaje de error que te indica.

Saludos.
  #11 (permalink)  
Antiguo 06/05/2008, 08:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

esta en mi clase collection

class Collection {

private $collection = array ( );

function __construct() {

}

public function Adicionar(Persona $persona) {
$this->collection [] = $persona;
}

function __destruct() {

}
}

esta mi clase Recurso
require_once ('class.Collection.php');


class Recursos {
private $listadoPersnoa;
private $cantReal;

function __construct() {
$this->listadoPersnoa = new Collection();
}

function addPersona(Persona $per) {
//$this->listadoPersnoa = new Collection();
$this->listadoPersnoa-> aki el warning

}
}


lo que pasa es ke no me deja llamar a la funcion Adicionar de la clase Collection, pero si descomento la linea //$this->listadoPersnoa = new Collection(); si lo hace, pero no es lo que quiero si ya inicialice listadoPersona en el constructor de mi clase Recurso
y
  #12 (permalink)  
Antiguo 06/05/2008, 08:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: coleccion de objetos

Ok, pero ¿que error te marca?

Saludos.
  #13 (permalink)  
Antiguo 06/05/2008, 08:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

bueno, que malo soy!!, lo que pasa es que estoy utilizando zen studio for eclipse y no me ponia el codec compition de ese metodo, pense ke era por algun error, pero lo puse a la fuerza y no dio ningun error..
gracias..
PD: como seira el codigo para una function getObj(int pos) dentro de mi clase Collection y como se la cantidad de objetos ke tiene mi array?

gracias de nuevo
  #14 (permalink)  
Antiguo 06/05/2008, 08:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: coleccion de objetos

Hola yellow1984,

La cantidad la puedes saber usando count() en tu array, y para devolver un objeto basta con primero comprobar si la posición es valida (no es mayor al total de objetos y es mayor a 0), después solo tienes que hacer un return $this->collection[$pos].

Saludos.
  #15 (permalink)  
Antiguo 06/05/2008, 08:55
 
Fecha de Ingreso: marzo-2008
Mensajes: 45
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: coleccion de objetos

gracias GatorV, me has resuelto un gran problema..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:26.