Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Multiples constructores (http://www.forosdelweb.com/f68/multiples-constructores-261783/)

stock 14/01/2005 00:52

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!!

Calisco 14/01/2005 07:49

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.

Calisco 14/01/2005 07:50

Encapsulamiento
Sobrecarga

jpinedo 14/01/2005 15:27

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:adios:

jpinedo 14/01/2005 19:05

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:adios:


La zona horaria es GMT -6. Ahora son las 18:00.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.