2010-09-20 5 views
28

Pouvez-vous faire quelque chose comme ça en PHP:Appeler un super méthode en PHP

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

    // do something 
} 
+0

Pouvez-vous clarifier ce qu'est * super *? Êtes-vous à l'intérieur d'une classe avec cela? –

+0

@Pekka: super est le mot-clé que Java utilise pour accéder aux constructeurs et aux méthodes de sa classe parente. D'autres langues peuvent également utiliser ce mot-clé. – Powerlord

+0

@R. Bemrose ah, d'accord. Cela explique aussi pourquoi tant de gens ont dit "parent" tout de suite –

Répondre

78

Oui, il est appelé parent:: bien.

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

    //do something 
} 
+4

J'ai déjà ajouté +1 de cette réponse, et pourtant je me retrouve ici. Si facilement, j'oublie ces choses. –

+1

@Mike, je voudrais +1 ce commentaire si c'était possible ... :) –

+7

Je l'oublie parce que c'est une syntaxe bizarre. C'est comme si on appelait une méthode statique. –

11

utilisation parent;

parent::foo();

+1

'->' déclenchera une erreur fatale. Utilisez toujours '::'. PHP appelle le parent dans le même mode (instance/static) que l'enfant a été appelé. – webbiedave

+0

oui, j'ai mal écrit cela et corrigé dans les 10 secondes;) –

+2

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

6

Voulez-vous dire appeler la méthode de la classe parente? Dans ce cas, vous feriez:

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


class Baz extends Bar 
{ 
    public function foo() 
    { 
    parent::foo(); 
    } 
} 
Questions connexes