La construcción de clase principal no funciona automáticamente

Estoy tratando de construir un marco básico para mi sitio y para hacerlo necesito extender la clase principal, pero el constructor de la clase principal solo funciona si hago lo siguiente: parent::__construct() Aquí hay un ejemplo:

class prime
{
 protected __construct()
 {
   //code
 }
}

class subPrime extends prime
{
  protected __construct()
  {
    //code
  }

}

Alguien sabe la solución?

preguntado el 27 de julio de 12 a las 20:07

2 Respuestas

Según manual de php el constructor principal no se llama automáticamente:

Nota: Los constructores principales no se llaman implícitamente si la clase secundaria define un constructor. Para ejecutar un constructor padre, se requiere una llamada a parent :: __ construct () dentro del constructor hijo.

Este es un comportamiento correcto, esperado, deseado y bien documentado.

Respondido 27 Jul 12, 20:07

Por lo general, si desea invocar al constructor de la clase principal desde una subclase, haría lo que sugiere (parent::__construct()). O simplemente no anule el método constructor en las subclases.

Si no necesita cambiar el comportamiento del constructor en la clase secundaria, probablemente sea mejor que no anule el método principal.

Respondido 27 Jul 12, 20:07

Bueno, tengo que hacerlo porque quiero intilizar la clase principal. Por cierto, ¿Mike Brant? bonito nombre XD- Yehonatan

Supongo que no entiendo. Si está tratando de crear una instancia de un objeto de clase principal, no tiene nada que ver con la subclase. - Mike Brant

La subclase hereda la funcionalidad de la clase principal: Yehonatan

Sí. Si solo desea que haga la misma lógica de constructor que la clase principal, simplemente no defina un constructor en la subclase. Si lo hace, la subclase ejecutará el constructor de la clase principal al intentar crear una instancia de un objeto de subclase. - Mike Brant

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.