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

Duda con Clases

Estas en el tema de Duda con Clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, tengo una duda acerca de una declaración de una variable, es decir, tengo una clase fecha y otra cliente, en la clase ...
  #1 (permalink)  
Antiguo 30/09/2008, 14:55
 
Fecha de Ingreso: mayo-2007
Ubicación: Los Teques -Edo Miranda
Mensajes: 43
Antigüedad: 16 años, 11 meses
Puntos: 0
Duda con Clases

Hola a todos, tengo una duda acerca de una declaración de una variable, es decir, tengo una clase fecha y otra cliente, en la clase cliente tengo un metodo llamado AgregarCliente(); y dentro de este método tengo la declaración de la clase fecha, como se muestra a continuacion
Código PHP:
class Cliente{
    public function 
AgregarCliente(){
        
$fecha = new Fechas();
        
        
$fecha->SetAnio("2008");
        
$fecha->SetAnio("2009");

        
$fechaCreacion $fecha->GetAnio("2008");
        
$fechaCulminacion $fecha->GetAnio("2009");

        echo 
"fechaCreacion: ".$fechaCreacion." fechaCulmi: ".$fechaCulminacion;
    }

Mi pregunta es como hago para utilizar el mismo metodo pero que asigne diferentes valores, ya que en este caso siempre me retorna el ultima valor que es 2009.
Espero que me puedan dar alguna sugerencia de como hacer para este caso.
Gracias de Antemano
  #2 (permalink)  
Antiguo 30/09/2008, 16:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con Clases

y si usas parámetros? (argumentos)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/09/2008, 17:13
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Duda con Clases

Cita:
Iniciado por vvillar21 Ver Mensaje
Mi pregunta es como hago para utilizar el mismo metodo pero que asigne diferentes valores, ya que en este caso siempre me retorna el ultima valor que es 2009.
Espero que me puedan dar alguna sugerencia de como hacer para este caso.
Gracias de Antemano
No entiendo... estás preguntando una de 2 cosas. Según entendí:

1)
Cita:
Mi pregunta es como hago para utilizar el mismo metodo pero que asigne diferentes valores
Tendrías que crear más métodos getter/setter con sus correspondiente propiedades, pero...

2)
Cita:
ya que en este caso siempre me retorna el ultima valor
Evidente, pues el tu método setter reemplaza el valor anterior de la propiedad. Si quieres un setter "con memoria", tendrías que tener un array en la propiedad, el setter debiera asignar el nuevo elemento en ese arreglo, y el getter, obtener un valor, ya sea el último o alguno de una posición especial.
__________________
Blog | Tecnosquad
  #4 (permalink)  
Antiguo 30/09/2008, 17:52
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Duda con Clases

Mmmm.... muy poco clara la pregunta, más lo que quieres hacer. ¿Serás otro programador que quiere aprender a base de "prueba y error"? No vas a llegar lejos si no te fundamentas.

  • Primero, qué hace la clase Fecha con los misteriosos métodos getAnio? (la verdad que no le encuentro sentido pasar el año y que te devuelva ... el año?).
  • Segundo, si el método de Fecha queda con el último valor, el problema es de Fecha, justamente, el código que omites.

Sugiero que redactes mejor el problema, expliques conceptualmente qué hace Fecha y el método getAño, y posteriormente coloques el código de la misma.

Ayuda a que podamos ayudarte.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 30/09/2008, 19:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Duda con Clases

Exacto, o en dado caso como última opción, puedes instanciar dos objetos del tipo fecha y asi cada uno utilizarlo con diferentes parámetros.

Saludos.
  #6 (permalink)  
Antiguo 30/09/2008, 19:42
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Duda con Clases

Cita:
Iniciado por GatorV Ver Mensaje
Exacto, o en dado caso como última opción, puedes instanciar dos objetos del tipo fecha y asi cada uno utilizarlo con diferentes parámetros.

Saludos.
Si, exacto, me olvidaba esa alternativa... pero quería dejar de intentar embocar en el aro con los ojos vendados
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 01/10/2008, 07:23
 
Fecha de Ingreso: mayo-2007
Ubicación: Los Teques -Edo Miranda
Mensajes: 43
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Duda con Clases

Hola muchas gracias a todos por sus respuestas, efectivamente lo mejor es crear otra instancia de la clase fecha lo probe y me funciono como quería. Lo que realmente tengo es una clase fecha donde están los getters y setters de los campos dia, mes y anio


Código:
Código PHP:
//ARCHIVO fecha.php
<?php
       
class Fechas{
           private 
$vFecha;
       private 
$vHora;
       private 
$vDia;
       private 
$vMes;
       private 
$vAnio;

    
//CONSTRUCTOR
    
public function __construct(){
        
$this->vFecha $this->SetFecha("00/00/0000");
        
$this->vHora $this->SetHora("00:00");
        
$this->vDia $this->SetDia("00");
        
$this->vMes $this->SetMes("00");
        
$this->vAnio $this->SetAnio("0000");
    }

    
//FUNCIONES SETTERS Y GETTERS

    //Setter's
    
public function SetFecha($fecha){
        
$this->vfecha $fecha;
    }
    public function 
SetHora($hora){
        
$this->vHora $hora;
    }
    public function 
SetDia($dia){
        
$this->vDia $dia;
    }
    public function 
SetMes($mes){
        
$this->vMes $mes;
    }
    public function 
SetAnio($anio){
        
$this->vAnio $anio;
    }

    
//Getter's
    
public function GetFecha(){
        return 
$this->vFecha;
    }
    public function 
GetHora(){
        return 
$this->vHora;
    }    
    public function 
GetDia(){
        return 
$this->vDia;
    }
    public function 
GetMes(){
        return 
$this->vMes;
    }
    public function 
GetAnio(){
        return 
$this->vAnio;
    }

       }

?>
Luego tengo otra clase llamada Cliente
Código:
Código PHP:
<?php
//ARCHIVO cliente.php
include_once('basedatos.php');
include_once(
'fechas.php');

        class 
Cliente{
             private 
$vNomcliente;
         private 
$vRif;
         private 
$vNit;
         private 
$vFechaVencimiento;
         private 
$vFechaCreacion;
             
             public function 
__construct(){        
        
$this->vNomcliente $this->SetNomCliente("");
        
$this->vRif $this->SetRif("");
        
$this->vNit $this->SetNit("");
              }
            
              
//FUNCIONES SETTERS Y GETTERS

          //Setter's
              
public function SetNomCliente($nomCte){
        
$this->vNomcliente $nomCte;
          }
          public function 
SetRif($rif){
        
$this->vRif $rif;
          }
          public function 
SetNit($nit){
        
$this->vNit $nit;
          }
 
              
//Getter's    
            
public function GetNomCliente(){
        return 
$this->vNomcliente;
              }
          public function 
GetRif(){
        return 
$this->vRif;
          }
           public function 
GetNit(){
        return 
$this->vNit;
          }
               
              public function 
AgregarCliente(){
                   
$bd = new BaseDatos();
                   
$fechaCreacion = new Fechas();
                   
$fechaVencimiento = new Fechas();
                   
                   
$query "insertarCliente('".trim($this->GetNomCliente())."',
                                                     '"
.trim($this->GetRif())."',
                                                     '"
.trim($this->GetNit())."',
                                                     '"
.trim($fechaCreacion->GetFecha())."',
                                                     '"
.trim($fechaVencimiento->GetFecha())."');";
                   
$bd->Conexion();
                      
$resultado =  $bd->EjecutarQuery($query);                                                                  
                   
$bd->Desconexion();
                   return 
$resultado;                                      
              }
        }
     
?>
Despues tengo un el siguiente archivo
Código:
Código PHP:
//ARCHIVO agregarCliente.php
<?php
include_once('cliente.php');
include_once(
'fecha.php');

    
$cliente = new Cliente();
    
$fechaCreacion = new Fechas();
    
$fechaVencimiento = new Fechas();

    
$cliente->SetNomCliente($_POST['nombreCliente']);
    
$cliente->SetRif($_POST['rif']);
    
$cliente->SetNit($_POST['nit']);
    
    
$fechaCreacion->SetFecha($_POST['fechaCreacion']);
    
$fechaVencimiento->SetFecha($_POST['fechaVenc']);

    echo 
$cliente->AgregarCliente(); // Me arroja un mensaje de error a través de un alert
?>
Ahora fijense que en el archivo agregarCliente.php tengo dos instancias de la clase Fechas, mi pregunta es cuando en el método de agregarCliente() en el archivo cliente.php tengo los getters de las fechas cómo sabe que es valor le corresponde Huh?

Espero haberme explicado mejor.
Gracias de Antemano
  #8 (permalink)  
Antiguo 01/10/2008, 07:34
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Duda con Clases

Yo que tu redefiniria el metodo AgregarCliente() para que pueda recibir las dos fechas, ya que como lo tienes ahora las fechas que estas instanciando en el método AgregarCliente() no están seteadas.

Prueba esto en //ARCHIVO cliente.php

Código PHP:
public function AgregarCliente($fechaCreacion$fechaVencimiento){
    
$bd = new BaseDatos();
                   
    
$query "insertarCliente('".trim($this->GetNomCliente())."',
        '"
.trim($this->GetRif())."',
        '"
.trim($this->GetNit())."',
        '"
.trim($fechaCreacion->GetFecha())."',
        '"
.trim($fechaVencimiento->GetFecha())."');";

    
$bd->Conexion();
    
$resultado =  $bd->EjecutarQuery($query);                                                                  
    
$bd->Desconexion();
    
    return 
$resultado;                                      

y en //ARCHIVO agregarCliente.php

Código PHP:
include_once('cliente.php');
include_once(
'fecha.php');

    
$cliente = new Cliente();
    
$fechaCreacion = new Fechas();
    
$fechaVencimiento = new Fechas();

    
$cliente->SetNomCliente($_POST['nombreCliente']);
    
$cliente->SetRif($_POST['rif']);
    
$cliente->SetNit($_POST['nit']);
    
    
$fechaCreacion->SetFecha($_POST['fechaCreacion']);
    
$fechaVencimiento->SetFecha($_POST['fechaVenc']);

    echo 
$cliente->AgregarCliente($fechaCreacion$fechaVencimiento); 
Saludos!!
  #9 (permalink)  
Antiguo 01/10/2008, 08:18
 
Fecha de Ingreso: mayo-2007
Ubicación: Los Teques -Edo Miranda
Mensajes: 43
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Duda con Clases

Ah ok muchas gracias, claro asi me va a funcionar..
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 02:26.