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

Multiples constructores

Estas en el tema de Multiples constructores en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Solo una duda!! En PHP puedo tener varios constructores, asi como en JAVA?? Código PHP: class  myclase {          function  myclase (){              echo  "Constructor sin parametros!" ;          } ...
  #1 (permalink)  
Antiguo 14/01/2005, 00:52
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Multiples constructores

Solo una duda!!

En PHP puedo tener varios constructores, asi como en JAVA??

Código PHP:
class myclase{
         function 
myclase(){
             echo 
"Constructor sin parametros!";
         }

         function 
myclase($par){
             echo 
"solo con un parametro!";
         }

         function 
myclase($par,$otro="algo"){
             echo 
"Con 2 parametros!!";
         }

es eso posible?? otra pregunta, puedo tener variables privadas y publicas??

bytes!!

Última edición por stock; 14/01/2005 a las 00:53
  #2 (permalink)  
Antiguo 14/01/2005, 07:49
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 2 meses
Puntos: 4
Creo, si no me equivoco ya que soy bastante nuevo en esto, lo que estas haciendo es sobrecarga. PHP 5 soporta la sobrecarga, pero creo que la sintaxis es distinta.

Por otro lado, otra mejora sustancial de PHP 5 es el encaptulamiento. Por eso, soporta variables publicas y privadas.

MI firma tiene un acceso a la traduccion del manual de PHP5 al castellano. Todavia no esta terminado del todo, pero vas a poder encontrar estas secciones.
__________________
| Cabeza De Raton |
  #3 (permalink)  
Antiguo 14/01/2005, 07:50
Avatar de Calisco  
Fecha de Ingreso: marzo-2004
Ubicación: Neuquen
Mensajes: 732
Antigüedad: 20 años, 2 meses
Puntos: 4
Encapsulamiento
Sobrecarga
__________________
| Cabeza De Raton |
  #4 (permalink)  
Antiguo 14/01/2005, 15:27
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Pues no... PHP no permite directamente definir más de una función con el mismo nombre como en Java. En PHP una función está definida por su nombre, mientras que en Java se define por su nombre, número de argumentos y tipo de argumentos lo cual permite una sobrecarga más fácil.

Pero existen formas de hacer esta sobrecarga definiendo una única función que haga una u otra cosa según la cantidad de parámetros que se le pasen.
Para eso utilizas
func_num_args() que te devuelve el número de argumentos pasados a la función. http://www.php.net/func-num-args
func_get_arg($posicion) que te devuelve el valor del argumento que está pasado en la posicion $posicion. http://www.php.net/func-get-args
En PHP 4 sería:
Código PHP:
function miFuncion(){
    switch(
func_num_args()){
        case 
0:
            echo 
"Ejecución de miFuncion() sin parámetros";break;
        case 
1:
            echo 
"Ejecución de miFunction() con UN parámetro<br />\n";
            echo 
"El parámetro es:"func_get_arg(0);break;
        case 
2:
            echo 
"Ejecución de miFunction() con DOS parámetro<br />\n";
            echo 
"El parámetro 1 es:"func_get_arg(0);
            echo 
"El parámetro 2 es:"func_get_arg(1);break;
        default:
            echo 
"Error!.. número incorrecto de parámetros";
    }

Sobre este tema (muy similar) Webstudio hizo una gran expliación hace poco:
http://www.forosdelweb.com/showpost....6&postcount=23

Saludos

Última edición por jpinedo; 14/01/2005 a las 15:41
  #5 (permalink)  
Antiguo 14/01/2005, 19:05
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
En ZonaPHP hay un buen artículo sobre POO. En el apartado "sobrecarga" se resuelve este tema de una manera más directa:
http://www.zonaphp.com/index.php?mod...&id=1&pagina=5

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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:08.