2012-10-17 42 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声明中给出的基类的名称。

相关问题