2010-09-20 35 views
28

¿Se puede hacer algo como esto en PHP:Llamar a un método súper en PHP

function foo() 
{ 
    super->foo(); 

    // do something 
} 
+0

¿Puede aclarar qué es * super *? ¿Estás dentro de una clase con esto? –

+0

@Pekka: super es la palabra clave que Java usa para acceder a los métodos y constructores de su clase principal. Otros idiomas también pueden usar esta palabra clave. – Powerlord

+0

@R. Bemrose ah, está bien. Eso también explica por qué tantas personas dijeron "padre" de inmediato –

Respuesta

78

Sí, se llama parent:: sin embargo.

public function foo() 
{ 
    parent::foo(); // this is not a static method call, even though it looks like one 

    //do something 
} 
+4

Ya he respondido +1 en esta respuesta, pero me encuentro aquí nuevamente. Tan fácilmente que me olvido de estas cosas. –

+1

@Mike, quisiera +1 que comente si fuera posible ... :) –

+7

Lo olvido porque es una sintaxis tan extraña. Se siente como llamar a un método estático. –

11

uso parent;

parent::foo();

+1

'->' provocará un error fatal. Siempre use '::'. PHP llamará al padre en el mismo modo (instancia/estática) a medida que se llamó al hijo. – webbiedave

+0

sí, lo escribí mal y lo arreglé en 10 segundos;) –

+2

Genial. +1 ------ – webbiedave

6

¿Se refiere a calling the parent class method? En ese caso, usted haría:

class Bar 
{ 
    public function foo() 
    { 
    // blah 
    } 
} 


class Baz extends Bar 
{ 
    public function foo() 
    { 
    parent::foo(); 
    } 
} 
Cuestiones relacionadas