在PHP中覆盖函数的正确方法

时间:2012-10-17 00:39:16

标签: php oop

  

可能重复:
  How do I call PHP parent methods from within an inherited method?

我试图以下列方式覆盖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();

?>

问题是,如果子类具有相同名称的函数,我似乎无法正确调用父函数login()。

据我所知,你不能拥有同名的功能,那么对我的问题最好的解决方案是什么?

2 个答案:

答案 0 :(得分: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'
      );
   }
}

答案 1 :(得分:2)

Use Parent keyword Insted你应该改变:

$this->login(

parent::login(

PHP DOC

  

不应在代码中使用基类的文字名称,而应使用特殊名称parent,它指的是类的extends声明中给出的基类名称。