2010-09-20 13 views
28

può fare qualcosa di simile in PHP:Chiamare un metodo eccellente in PHP

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

    // do something 
} 
+0

Puoi chiarire che cos'è * super *? Sei in una classe con questo? –

+0

@Pekka: super è la parola chiave utilizzata da Java per accedere ai costruttori e ai metodi della sua classe genitore. Altre lingue possono usare questa parola chiave. – Powerlord

+0

@R. Bemrose ah, okay. Questo spiega anche perché così tante persone hanno detto subito "genitore" –

risposta

78

Sì, si chiama parent:: però.

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

    //do something 
} 
+4

Ho già fatto +1 su questa risposta, tuttavia mi trovo di nuovo qui. Così facilmente dimentico queste cose. –

+1

@Mike, vorrei fare +1 su questo commento se fosse possibile ... :) –

+7

L'ho dimenticato perché è una sintassi così strana. Sembra di chiamare un metodo statico. –

11

uso parent;

parent::foo();

+1

'->' attiverà l'errore fatale. Usa sempre '::'. PHP chiamerà il genitore nella stessa modalità (istanza/statico) quando è stato chiamato figlio. – webbiedave

+0

sì, l'ho erroneamente scritto e risolto entro 10 secondi;) –

+2

Cool. +1 ------ – webbiedave

6

Intendi chiamare il metodo della classe genitore? In tal caso dovresti:

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


class Baz extends Bar 
{ 
    public function foo() 
    { 
    parent::foo(); 
    } 
} 
Problemi correlati