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

Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

Estas en el tema de Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION" en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola colegas: Amigos, les hago esta pregunta ! ¿ Hay alguna forma de cambiar metodos de una clase en tiempo de ejecucion ? Por ejemplo: ...
  #1 (permalink)  
Antiguo 08/01/2008, 10:29
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

Hola colegas:

Amigos, les hago esta pregunta !

¿ Hay alguna forma de cambiar metodos de una clase en tiempo de ejecucion ?

Por ejemplo:
Código PHP:
// File main.class.php
class MainClass {

function 
__construct(){
 require_once(
"modificador.class.php");
}

 function 
anyMethod(){
//statements
}
}
//File modificador.class.php INtente usar la palabra reservada FINAL pero no obtengo resultados

final function anyMethod(){
//statements
}


Lo que busco de hacer es que en una clase "MainClass" incluya un archivo que Modifique los Metodos de MainCLass. Es decir, Si en MainCLass hay un metodo que se llame MainCLass::setPrint(), sea modificado por un metodo de igual nombre SubCLass::setPrint(), pero en el archivo que MainClass::__contruct() Carga al iniciar el Objeto.

Espero entiendan el desastre que escribi...

Gracias y FELIZ AÑO 2008 lleno de muchos Bits y conexiones a internet más rápidas
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.

Última edición por dackiller; 08/01/2008 a las 10:36 Razón: Hice un SUBMIT accidentalmente
  #2 (permalink)  
Antiguo 08/01/2008, 13:21
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: Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

Eso es lo que hace la herencia, puedes sobreescribir metodos y heredar de la clase padre los metodos que quieras:
Código PHP:
class {
       public function 
__construct() {
              
// cosas
       
}

       public function 
setPrint() {
              echo 
"yo imprimo en A";
       }
}

class 
extends {
       public function 
setPrint() {
             echo 
"Yo imprimo en B";
        }
}

$a = new A();
$a->setPrint(); // "yo imprimo en A"
$b = new B();
$b->setPrint(); // "yo imprimo en B" 
Saludos.
  #3 (permalink)  
Antiguo 08/01/2008, 18:17
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

Creo que la respuesta de GatorV es la única válida.

Una vez que una clase está definida no puedes redefinir sus métodos... excepto que utilices el método "mágico" __call y que no definas la función, sino que el __call sea quien llame al método adecuado, pero se tienen que llamar de forma diferente.

Aun así, reconsidera si esa es la mejor solución a tu problema... Es difícil encontrar un caso en el que código modificable en tiempo de ejecución sea la mejor opción.
  #4 (permalink)  
Antiguo 08/01/2008, 19:31
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Re: Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

Si es lo que habia ya pensado, sin embargo tenia que agotar mis esperanza de encontrar alguna forma de hacerlo, lo haré con herencia para no seguir matandome la cabeza...

Gracias Comunidad
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #5 (permalink)  
Antiguo 08/01/2008, 21:26
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: Abstraccion o Interfaces en OOP "NO ENCUENTRO LA SOLUCION"

La ventaja de la POO es que es muy correcta en la forma de aplicar sus conceptos, asi que si buscas otra forma de hacerlo, deberias de explicar un poco mas que es lo que deseas de hacer, otra forma que se me ocurre es usar el patron Decorator para hacer subclases que impriman dependiendo de como envies el valor en el constructor.

Saludos.
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 05:55.