PHP: Kann ich deklarieren Sie eine abstrakte Funktion mit einer Variablen Anzahl von Argumenten?

Ich möchte in der Lage sein, zu erklären, eine abstrakte Funktion in einer übergeordneten Klasse, mit einer unbekannten Anzahl von Argumenten:

abstract function doStuff(...);

aus und definieren Sie anschließend eine Umsetzung mit einem Satz angedeutet Argumente:

 /**
 * @param int $userID
 * @param int $serviceproviderID
 */
static function doStuff($userID, $serviceproviderID) {}

Den besten Ansatz habe ich so weit ist,

abstract function doStuff();

 /**
 * @param int $userID
 * @param int $serviceproviderID
 */
static function doStuff() {
    $args = func_get_args();
    ...
}

Aber jedes mal, wenn die Funktion aufgerufen wird, bekomme ich einen Haufen "fehlendes argument" Warnungen wegen der Hinweise. Gibt es einen besseren Weg?

Edit: Die Frage ist falsch, bitte vergeuden Sie nicht Ihre Zeit mit der Beantwortung. Das folgende ist das, was ich suchte, und es scheint zu funktionieren, ohne Warnungen.

abstract class Parent {
    abstract function doStuff();
}

/**
* @param type $arg1
* @param type $arg2
*/
class Child extends Parent {
    function doStuff($arg1, $arg2) {
        ...
    }
}
Haben Sie überlegt, Ihre Argumente in der form von array?
Warum sollte man eine Funktion definieren, die als abstrakte, in eine Schnittstelle? Dann wieder, eine Schnittstellen-Funktion müssen die gleiche Erklärung wie Ihre Umsetzung. Das ist die ganze Idee der Schnittstellen. Ich weiß nicht, was dein Ziel ist, aber ich denke, du musst versuchen, Ihr code als unklar und unbrauchbar wie möglich.
Huh, sorry, ich kann geschraubt haben diese Frage bis. Ich bin nicht immer alle Warnungen, also denke ich, dieser Ansatz ist OK. Ich möchte speziell mehrere, benannte Argumente, wie es macht den code lesbarer zu gestalten.
Wenn Sie wirklich wollen, um eine abstrakte Methode, die von einer unbekannten Anzahl von Argumenten, die Sie wahrscheinlich gar nicht wirklich darüber nachgedacht. Sie in der Regel definieren Sie abstrakte Methoden, so kann jeder erweitert die Klasse und alle anderen können jede Implementierung, die ohne Kenntnis Ihrer konkreten details, aber mit einer unbekannten Anzahl der Argumente, die der Benutzer muss kennen die details.
OMG, look at php.net was ist keyword -abstract.

InformationsquelleAutor | 2011-08-15

Schreibe einen Kommentar