2010-09-20 30 views
28

Bạn có thể làm điều gì đó như thế này trong PHP:Gọi một phương pháp siêu trong PHP

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

    // do something 
} 
+0

Bạn có thể làm rõ * super * là gì không? Bạn đang ở trong một lớp học với điều này? –

+0

@Pekka: siêu là từ khóa mà Java sử dụng để truy cập các phương thức và phương thức của lớp cha của nó. Các ngôn ngữ khác cũng có thể sử dụng từ khóa này. – Powerlord

+0

@R. Bemrose ah, được rồi. Điều đó cũng giải thích lý do tại sao rất nhiều người nói "cha mẹ" ngay lập tức –

Trả lời

78

Vâng, nó được gọi là parent:: mặc dù.

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

    //do something 
} 
+4

Tôi đã +1 câu trả lời này, nhưng tôi lại thấy mình ở đây một lần nữa. Vì vậy, tôi dễ dàng quên những điều này. –

+1

@ Giống như vậy, tôi sẽ +1 nhận xét đó nếu có thể ... :) –

+7

Tôi quên nó vì đó là một cú pháp kỳ lạ. Nó cảm thấy giống như gọi một phương pháp tĩnh. –

11

sử dụng parent;

parent::foo();

+1

'->' sẽ kích hoạt lỗi nghiêm trọng. Luôn sử dụng '::'. PHP sẽ gọi cha mẹ trong cùng một chế độ (instance/static) khi đứa trẻ được gọi. – webbiedave

+0

vâng, tôi đã viết sai và sửa trong vòng 10 giây;) –

+2

Tuyệt. +1 –––––– – webbiedave

6

Bạn có nghĩa là gọi phương thức lớp gốc không? Trong trường hợp đó, bạn sẽ làm:

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


class Baz extends Bar 
{ 
    public function foo() 
    { 
    parent::foo(); 
    } 
} 
Các vấn đề liên quan