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

Instaciar misma clase parametro diferente constructor

Estas en el tema de Instaciar misma clase parametro diferente constructor en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias, muchas gracias por detenerse a leer este tema Tengo una clase asi: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php class Prueba {   ...
  #1 (permalink)  
Antiguo 18/07/2012, 09:08
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Instaciar misma clase parametro diferente constructor

Buenos dias, muchas gracias por detenerse a leer este tema

Tengo una clase asi:

Código PHP:
Ver original
  1. <?php
  2. class Prueba
  3. {
  4.     private $type_connection;
  5.    
  6.     public function __construct($type)
  7.     {
  8.         switch($type)
  9.         {
  10.             case 'caso1':
  11.                 $connect = 'algo1';            
  12.             break;
  13.             case 'caso2':
  14.                 $connect = 'algo2';
  15.             break;
  16.             case 'caso3':
  17.                 $connect = 'algo3';
  18.             break;
  19.             default:
  20.                 $connect = NULL;
  21.             break;
  22.         }
  23.         $this->$type_connection = $connect;
  24.     }
  25.  
  26.     public function un_metodo($param1, $param2, $accion)
  27.     {
  28.         // codigos aqui
  29.         echo 'Hola '.$this->type_connection;
  30.     }
  31. }
  32.  
  33. $clase = new Prueba('caso1');
  34. // codigos aqui
  35. $clase = new Prueba('caso2');
  36. // codigos aqui
  37. ?>

Existe alguna forma de cambiar el constructor sin tener que volver a instanciar la clase?

El volver a instanciar la clase implicaria machacar el codigo y relentizar la ejecucion del script ?

Muchas gracias por su ayuda.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 18/07/2012, 09:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Instaciar misma clase parametro diferente constructor

No, no se puede cambiar el constructor, tu clase debería más bien adaptarse, por ejemplo, tener un setter para el tipo y que lo puedas cambiar en cualquier momento, ej:
Código PHP:
Ver original
  1. class Demo
  2. {
  3.         private $type;
  4.  
  5.         public function __construct($type) {
  6.                $this->type = $type;
  7.         }
  8.  
  9.         public function setType($type) {
  10.                $this->type = $type;
  11.  
  12.                return $this;
  13.         }
  14.  
  15.         public function foo() {
  16.                 echo "Type es: {$this->type}";
  17.         }
  18. }
  19.  
  20. $d = new Demo('bar');
  21. $d->foo();
  22. $d->setType('baz');
  23. $d->foo();

Saludos.
  #3 (permalink)  
Antiguo 18/07/2012, 09:33
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Instaciar misma clase parametro diferente constructor

Muchisimas gracias @GatorV es perfecto para lo que necesito. No conocia la funcion setType. Buscare mas acerca de este tema.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 18/07/2012, 11:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Instaciar misma clase parametro diferente constructor

No es una función definida, se le conoce como setter, y la idea es que siempre tengas setters y getters de tus propiedades (cuando aplica) ej:
Código PHP:
Ver original
  1. class Persona
  2. {
  3.         private $nombre;
  4.  
  5.         public function setNombre($nombre) { $this->nombre = $nombre; return $this; }
  6.         public function getNombre() { return $this->nombre; }
  7. }

Saludos.
  #5 (permalink)  
Antiguo 18/07/2012, 13:51
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Instaciar misma clase parametro diferente constructor

Jajajaja gracias por la aclaracion porque estaba enredado porque setType es para setear el tipo de variable.

;)

Muchas gracias.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: clase, class, constructor, diferente, parametro, php
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 07:00.