Foros del Web » Programando para Internet » PHP »

Alcance de métodos estáticos

Estas en el tema de Alcance de métodos estáticos en el foro de PHP en Foros del Web. Buenas! A ver si me podéis aclarar esta duda... Tengo un objeto con varios métodos estáticos, y en algunos de ellos hay instrucciones comunes; me ...
  #1 (permalink)  
Antiguo 04/06/2013, 01:44
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Alcance de métodos estáticos

Buenas!

A ver si me podéis aclarar esta duda...

Tengo un objeto con varios métodos estáticos, y en algunos de ellos hay instrucciones comunes; me gustaría saber si puedo meter la parte común en un nuevo método estático y llamarlo... pero no se si funcionaría.

Es decir, actualmente tengo:

Código PHP:
Ver original
  1. class Clase1{
  2.   private static function funcion1($parametro){
  3.     if($parametro==1)
  4.       Clase1::fun1();
  5.     elseif($parametro==2)
  6.       Clase1::fun2();
  7.   }
  8.  
  9.   private static function fun1(){
  10.     //cosas comunes a fun2;
  11.     //resto de función
  12.   }
  13.  
  14.   private static function fun2(){
  15.      //cosas comunes a fun1;
  16.      //resto de función
  17.   }
  18. }

y quiero saber si lo puedo cambiar por:

Código PHP:
Ver original
  1. class Clase1{
  2.   private static function funcion1($parametro){
  3.     if($parametro==1)
  4.       Clase1::fun1();
  5.     elseif($parametro==2)
  6.       Clase1::fun2();
  7.   }
  8.  
  9.   private static function fun1(){
  10.     Clase1::comun();
  11.     //resto de función
  12.   }
  13.  
  14.   private static function fun2(){
  15.       Clase1::comun();
  16.      //resto de función
  17.   }
  18.  
  19.   private static function comun(){
  20.     instrucciones comunes
  21.   }
  22. }

Desde ya, gracias.

Un saludo.
  #2 (permalink)  
Antiguo 04/06/2013, 01:56
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Alcance de métodos estáticos

Claro que se puede, es una cuestión de dise´no, hay que ver cómo haces la implementación en cada caso pero el enfoque (sin más detalles) es correcto. Salu2,
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 04/06/2013, 02:26
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Alcance de métodos estáticos

En la zona común trato variables y la _SESSION.

Supongo que a una malas podría o bien pasar las variables como puntero, o bien que el método estático común me retorne un array (u objeto) con los resultados, ¿no?

Supongo que con los punteros resultará...

No había caído antes... jejeje

Un saludo y gracias.
  #4 (permalink)  
Antiguo 04/06/2013, 05:50
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años
Puntos: 48
Respuesta: Alcance de métodos estáticos

Como estás llamando a funciones que están dentro de esa misma clase podrías usar "self" para no tener que repetir el nombre de la clase constantemente:
Código PHP:
Ver original
  1. class Clase1{
  2.     private static function funcion1($parametro){
  3.         if($parametro==1)
  4.             self::fun1();
  5.         elseif($parametro==2)
  6.             self::fun2();
  7.     }
  8.    
  9.     private static function fun1(){
  10.         self::comun();
  11.         //resto de función
  12.     }
  13.    
  14.     private static function fun2(){
  15.         self::comun();
  16.         //resto de función
  17.     }
  18.    
  19.     private static function comun(){
  20.         instrucciones comunes
  21.     }
  22. }
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España

Etiquetas: alcance
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 09:17.