J'ai une classe en PHP comme ceci:PHP: Comment passer les arguments __construct() de la classe enfant à parent :: __ construct()?
class ParentClass {
function __construct($arg) {
// Initialize a/some variable(s) based on $arg
}
}
Il a une classe enfant, en tant que tel:
class ChildClass extends ParentClass {
function __construct($arg) {
// Let the parent handle construction.
parent::__construct($arg);
}
}
Et si, pour une raison quelconque, le ParentClass doit changer pour prendre plus de un argument optionnel, que j'aimerais que ma classe Child fournisse "juste au cas où"? À moins que je ne code de nouveau la ChildClass, cela ne prendra jamais qu'un seul argument au constructeur, et ne passera qu'un seul argument.
Est-ce si rare ou une si mauvaise pratique que le cas habituel est qu'une ChildClass n'aurait pas besoin d'hériter d'une classe parent qui prend des arguments différents? Essentiellement, j'ai vu en Python où vous pouvez passer un nombre potentiellement inconnu d'arguments à une fonction via somefunction(*args)
où 'args' est un tableau/itérable d'une certaine sorte. Est-ce que quelque chose comme ça existe en PHP? Ou devrais-je refactoriser ces classes avant de continuer?
Cela provoque une boucle infinie sur PHP 5.4.14 – Hubro
Ne fonctionnera pas si $ this pointe vers une classe différente. – mAsT3RpEE
Dans 5.5 (peut-être plus tôt), vous pouvez simplement faire: 'call_user_func_array ('parent :: __ construct', func_get_args());'; –