0

重複の可能性:
継承されたメソッド内から 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();

?>

問題は、サブクラスに同じ名前の関数がある場合、親関数 login() を適切に呼び出せないように見えることです。

同じ名前を共有する関数を持つことはできないことを理解しています。私の問題に対する最善の解決策は何ですか?

4

2 に答える 2

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'
      );
   }
}
于 2012-10-17T00:41:48.393 に答える
2

親キーワード Insted を使用します。変更する必要があります。

$this->login(

parent::login(

PHP ドキュメント

コードで基本クラスのリテラル名を使用する代わりに、クラスの extends 宣言で指定された基本クラスの名前を参照する特別な名前のparentを使用する必要があります。

于 2012-10-17T00:42:03.063 に答える