Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   coleccion de objetos (http://www.forosdelweb.com/f68/coleccion-objetos-582861/)

yellow1984 04/05/2008 18:32

coleccion de objetos
 
tengo una clase(Almacen) que tiene una coleccion de Productos, ahora bien como represento eso en php _??

eddwinpaz 05/05/2008 00:12

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...

yellow1984 05/05/2008 06:13

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>();
.....
}

eddwinpaz 05/05/2008 06: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();
?>


zsamer 05/05/2008 07:58

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


GatorV 05/05/2008 08:11

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.

yellow1984 05/05/2008 09:59

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...

GatorV 05/05/2008 10:03

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.

yellow1984 06/05/2008 07:39

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)

}

GatorV 06/05/2008 07:51

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

Saludos.

yellow1984 06/05/2008 08:17

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

GatorV 06/05/2008 08:34

Re: coleccion de objetos
 
Ok, pero ¿que error te marca?

Saludos.

yellow1984 06/05/2008 08:42

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

GatorV 06/05/2008 08:52

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.

yellow1984 06/05/2008 08:55

Re: coleccion de objetos
 
gracias GatorV, me has resuelto un gran problema..


La zona horaria es GMT -6. Ahora son las 21:40.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.