2013-05-22 1 views
0

Je souhaite remplacer une méthode statique par une méthode non statique. Je reçois cette erreur:Remplacer une méthode statique par une méthode non statique

Fatal error: Cannot make static method Person::say() non static in class Coder on line 22 

Je veux remplacer une méthode statique parent classes makeCall() avec un makeCall() plus spécifique qui serait non-statique.

code:

<?php 

class Request { 

    public static function makeCall($url) { 

     // Do some cURL stuff... 

    } 
} 

class API { 

    const PRODUCTS = '/products'; 

    private $api; 

    public function __construct($api) { 

     $this->api = $api; 
    } 

    public function getProducts() { 

     $this->makeCall(self::PRODUCTS); 
    } 

    public function makeCall($service) { 

     parent::makeCall($this->api . $service); 
    } 
} 

je pouvais faire le parent makeCall() non statique, mais je veux aussi pouvoir Request:makeCall() dans certains endroits.

+2

le renommer? il n'y a pas d'autre option. – bwoebi

+0

vous ne pouvez pas faire comme l'erreur vous le dit. vous devrez utiliser un nom de méthode différent. – prodigitalson

+0

Oh, donc j'ai juste besoin de faire 'public function fooMakeCall()'. @bwoebi –

Répondre

2

Vous pouvez simplement changer le nom de votre méthode. Et appelez-le avec le nouveau nom.

Il n'existe aucune option pour avoir le même nom qu'une méthode statique de la classe que vous étendez.

Questions connexes