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

Metodo que se ejecuta dos veces

Estas en el tema de Metodo que se ejecuta dos veces en el foro de Frameworks y PHP orientado a objetos en Foros del Web. La pregunta es porque cuando ejecuto el siguiente codigo me imprime dos veces el mismo metodo es decir en vez de imprimir "A" me imprime ...
  #1 (permalink)  
Antiguo 01/08/2008, 00:21
 
Fecha de Ingreso: septiembre-2007
Mensajes: 60
Antigüedad: 16 años, 7 meses
Puntos: 1
Metodo que se ejecuta dos veces

La pregunta es porque cuando ejecuto el siguiente codigo me imprime dos veces el mismo metodo es decir en vez de imprimir "A" me imprime "AA" porque el metodo "demo" de la clase "demo" se ejecuta dos veces tiene algo que ver con la clonacion de objetos en PHP


Código PHP:
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php

class demo {
 public function 
demo() {
 echo 
"A";
 }
}

$objeto = new demo();
$objeto->demo();


?>
</body>
</html>
  #2 (permalink)  
Antiguo 01/08/2008, 03:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Metodo que se ejecuta dos veces

ocurre que hay un método llamado igual que la clase. En este caso método demo y clase demo.

Entonces a crear el objeto con

Código PHP:
$objeto = new demo(); 
se ejecuta el método demo y despues al llamar al metodo demo
Código PHP:
$objeto->demo(); 
se vuelve a ejecutar.

Creo que a partir de php5 se utiliza el método
Código PHP:
__construct() 
para que este se ejecute al crear el objeto. Pero antes de php5 se utilizaba lo que has realizado, llamar a un método igual que la clase y al crear el objeto se ejecuta aquel método que se llama igual.
  #3 (permalink)  
Antiguo 01/08/2008, 07:03
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Metodo que se ejecuta dos veces

Explicado de otra forma: si creas un método con el mismo nombre que la clase lo que haces es crear un "metodo constructor", por consiguiente cuando haces "new" (construyes el objeto) se ejecuta el mismo.

Como bien dice nx00, a partir de PHP5 tienes una palabra reservada para ese método que es __construct(), de la misma forma que tienes un destructor para la acción opuesta.

El ejemplo concreto podría ser:

Código PHP:
<?php 

class Persona 

   private 
$nombre;

   public function 
__construct($nombre
   { 
      echo 
'nace la persona'
   }

   public function 
saludar()
   {
      return 
'¿hola, como te va?';
   }

   public function 
__toString()
   {
      return 
'soy '.$this->nombre;
   }


$docente = new Persona('Enrique');

echo 
$docente->saludar();

echo 
$docente;

?>
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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 02:56.