2012-10-17 43 views
0

可能重複:
How do I call PHP parent methods from within an inherited method?正確的方法來覆蓋函數在PHP

我試圖重寫PHP函數以下列方式

主類

<?php  
class Curl{ 
    /* constructor */ 
    public function Curl(){} 

    /* login */ 
    public function login($url, $post_fields){ 
     ... 
    } 
} 
?> 

子類

<?php 
require_once("/var/www/api/curl/curl.php"); 

class Curl_B extends Curl{ 
    /* constructor */ 
    public function Curl_B(){} 

    /* login */ 
    public function login(){ 
     $this->login(
     'https://xxx.co.uk/login.php', 
     'email=xxx&pass=xxx' 
    ); 
    } 
} 

$curl = new Curl_B(); 
$curl->login(); 

?> 

的問題是,我似乎無法調用父功能登錄()如果適當的亞類具有相同名稱的功能。

我知道你不能擁有共享同一個名字的函數,那麼對我的問題最好的解決方案是什麼?

+0

無限遞歸? –

+0

順便說一下,使用類名作爲構造函數是php4時代的代碼;你應該開始使用'__construct()'聲明。 –

回答

4

要由同一個名字調用父類的功能:

class Curl_B extends Curl{ 
    /* constructor */ 
    public function Curl_B(){} 

    /* login */ 
    public function login(){ 
     parent::login(
     'https://xxx.co.uk/login.php', 
     'email=xxx&pass=xxx' 
    ); 
    } 
} 
2

Use Parent keyword Insted你應該改變:

$this->login(

parent::login(

PHP DOC

代替在代碼中使用基類的文字名稱,應該使用特殊名稱parent,它指向您的類的extends聲明中給出的基類的名稱。

相關問題