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

en php se heredan los constructores?

Estas en el tema de en php se heredan los constructores? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hi again folks!!! una preguntilla rapido, en php se heredan los constructores??? o es como en c++ que cada clase derivada tiene que implentar su ...
  #1 (permalink)  
Antiguo 29/08/2008, 03:59
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta en php se heredan los constructores?

hi again folks!!!
una preguntilla rapido, en php se heredan los constructores??? o es como en c++ que cada clase derivada tiene que implentar su propio constructor???
aunque ahora que lo pienso supongo que debe ser asi.
bueno, si alguien de todas formas puede sacarme de dudas agradecido estoy
  #2 (permalink)  
Antiguo 29/08/2008, 06:49
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: en php se heredan los constructores?

No, tenes que llamar al constructor "padre" explicitamente.
Tratá de ir siempre al manual. Esta siempre actualizado y con la información correcta.
No es por poca voluntad, te va a quitar menos tiempo a vos!

Constructores en php.net

Saludos!
__________________
Pasión por la Música
  #3 (permalink)  
Antiguo 29/08/2008, 07:03
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
De acuerdo Respuesta: en php se heredan los constructores?

gracias chistoso, busque antes en el manual pero por 'herencia' en vez de por 'constructores', soy un burro jejeje
  #4 (permalink)  
Antiguo 29/08/2008, 07:23
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: en php se heredan los constructores?

Bueno, no estaba tan mal tampoco, estabas hablando de herencia de constructores
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 29/08/2008, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: en php se heredan los constructores?

En cuyo caso sí se heredan los constructores, pero si tu lo defines nuevamente es forzoso llamar a parent::, tal como pasa con las funciones normales.

Saludos.
  #6 (permalink)  
Antiguo 30/08/2008, 17:06
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: en php se heredan los constructores?

Si en php se heredan los constructores pero si tu lo sobreescribes entonces se ejecutara el de la clase que llamaste y no el de la clase padre, si quieres a pesar de sobreescribirlo que tambien se ejecute el constructor padre debes llamarlo explicitamente con parent::__construct();
Saludos
  #7 (permalink)  
Antiguo 30/08/2008, 19:03
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: en php se heredan los constructores?

Resumiendo y simplificando: el constructor del padre se hereda (porque está disponible) pero no se ejecuta automáticamente, hay que hacerlo de forma explícita.

Código PHP:
class Hijo
{
   public function 
__construct()
   { 
       
parent::_construct(); // constructor del padre

       /* código de tú constructor */
   
}

PD: no recuerdo como era en Java, es similar o se ejecuta automáticamente? algún "javero" dentro del público?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 30/08/2008, 19:09
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: en php se heredan los constructores?

En java tengo la idea que se ejecuta automaticamente.
  #9 (permalink)  
Antiguo 30/08/2008, 20:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: en php se heredan los constructores?

No se ejecuta automaticamente, sería romper con la abstracción de heredar una clase. En Java llamas a super().

Saludos.
  #10 (permalink)  
Antiguo 30/08/2008, 20:58
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: en php se heredan los constructores?

Cierto:...
En casos en que se vea involucrada la herencia, los constructores toman un significado especial porque lo normal es que la subclase necesite que se ejecute el constructor de la superclase antes que su propio constructor, para que se inicialicen correctamente aquellas variables que deriven de la superclase. En C++ y Java, la sintaxis para conseguir esto es sencilla y consiste en incluir en el cuerpo del constructor de la subclase como primera línea de código la siguiente sentencia:
super( parametros_opcionales );
  #11 (permalink)  
Antiguo 31/08/2008, 03:18
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: en php se heredan los constructores?

si bueno, todo lo que me dicen esta muy, pero segun, por lo que me dijo alguno de ustedes, me parece que si se heredan, es decir, que php lo toma como otro metodo magico mas, igual que _call o _toString, de esta manera cuando estamos creando nuestro constructor en la clase derivada, en realidad lo que estamos haciendo es sobrecargar el metodo ya heredado, asi que, para salir de dudas, solo hereden de una clase con constructor, y luego, sin definir nada en la clase derivada, prueben llamarlo, seria algo asi:

$a = new ClaseBase($parametros_del_constructor_de_ClaseBase );

$b = new ClaseDerivada;

$b->__construct($parametros);

si, __construct esta disponible en $b, es que sin duda se hereda, cosa que no pasa al menos, en c++, de hecho probare ahora, pues no lo he hecho por vagancia
  #12 (permalink)  
Antiguo 09/09/2008, 21:27
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: en php se heredan los constructores?

Como comentario al margen, en Java, C++ y C# el constructor por defecto se llama implícitamente si no hay alguna llamada explícita a algún constructor -- podría darse el caso de que hubiera sobrecarga de constructores. (Al menos, en las pruebas que acabo de hacer; en C++ es probable que haya otras reglas más complejas, como suele haber en C++, pero sólo tengo una leve idea del lenguaje, así que hablo por lo que acabo de probar, nada más...)

Saludos
Juan Pablo Califano
  #13 (permalink)  
Antiguo 10/09/2008, 02:48
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: en php se heredan los constructores?

bueno, aun y todavia no he hecho las pruebas correspondientes pero lo que sucede que programaba en c++ y tiendo a tratar de reprocharle a php cosas de c++, cosa que hago por no saber mucho y no poder explotar la potencia de php, pero bueno,si le sirve de aclaracion a alguien lo que sucede en c++, un lenguaje que permite sobrecarga de operadores y metodos, que por lo general, a las clases que no tienen constructor, el compilador o alguien le proporciona un constructor por defecto llamado (al menos yo le llamo asi) constructor de oficio, ademas de que puedes sobrecargar el constructor de tu clase para crear diferentes constructores, yo por lo general siempre creo al menos tres:
- constructor por defecto o inicializacion
- constructor de conversion
- constructor de copia
cosa que ahora tengo que hacer dentro de uno solo en php, pero si vamos al grano del asunto de este tema, c++ y creo que todos los lenguajes con orientacion a objetos, al no permitir que el constructor se herede tratan de mantener la integridad de nuestros objetos (un objeto no puede inicializar a otro) y mantener una secuencia logica en la creacion del objeto ya que los constructores se van llamando de manera secuencial desde la primera clase (base) hasta la ultima (derivada), por tanto, si no creamos un constructor en nuestra clase derivada, vale, por lo general no debe suceder nada (al menos, no en php), el problema vendria si tratamos de llamar a un metodo constructor en una clase derivada y que, por ende, dicho constructor no existe porque no lo hemos definido y porque no se hereda.
Es por esto que me gustaba mas la sintaxis de php en la que se establece que el nombre del constructor sea el mismo que el de la clase:
class TMyClass {
...
public TMyClass(); //constructor de TMyClass
...
}

asi queda mas ilustrado el hecho, de que no puedes tener como constructor en una clase digamos TMyExceptionClass, a un metodo llamado TMyClass()

uff!!! vaya lio este de los constructores, pero creo que es fructifero jeje, es un tema importante y que muchos lo dan por banal o tonto, y es cuando sucede que le pasan un parametro extraño al constructor de algun objeto, y este se vuelve inconsistente y comienza a hacer, digamos, cosas extrañas XD
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 04:25.