PHP: puis-je déclarer un résumé de la fonction avec un nombre variable d'arguments?

Je veux être en mesure de déclarer une fonction abstraite dans une classe parent, avec un nombre indéterminé d'arguments:

abstract function doStuff(...);

puis définir une mise en œuvre avec un ensemble de fait allusion arguments:

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

La meilleure approche que j'ai eu jusqu'à présent est le présent,

abstract function doStuff();

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

Mais à chaque fois que la fonction est appelée, je reçois un tas de "manque d'argument" mises en garde en raison de la conseils. Est-il un meilleur moyen?

Edit: La question du mal, s'il vous plaît ne perdez pas votre temps à répondre. Ce qui suit est ce que je cherchais, et il semble fonctionner sans avertissements.

abstract class Parent {
    abstract function doStuff();
}

/**
* @param type $arg1
* @param type $arg2
*/
class Child extends Parent {
    function doStuff($arg1, $arg2) {
        ...
    }
}
Avez-vous pensé à prendre vos arguments sous la forme de tableau?
Pourquoi définir une fonction comme résumé dans une interface? Puis de nouveau, une fonction d'interface doit avoir la même déclaration que sa mise en œuvre. C'est l'idée d'interfaces. Je ne sais pas quel est votre objectif, mais je pense que vous devez essayer de faire de votre code comme incertaine et inutilisable que possible.
Hein, désolé, j'ai peut-être vissé à cette question. Je suis pas obtenir toutes les mises en garde, donc je suppose que cette approche est OK. J'ai particulièrement envie de plusieurs, les arguments nommés, car il rend le code plus lisible.
Lorsque vous voulez vraiment vous fournir une méthode abstraite avec un nombre indéterminé d'arguments, vous n'avez probablement pas vraiment pensé. Vous définissent en général les résumés des méthodes, afin que chacun puisse s'étend la classe et tout le monde peut utiliser toute mise en œuvre sans connaître leurs détails concrets, mais avec un nombre indéterminé d'arguments les utilisateurs connaître les détails.
OMG, regardez php.net qu'est-ce que mot-clé abstract pour.

OriginalL'auteur | 2011-08-15