Remplacement des paramètres de méthode en PHP : une violation de normes strictes
Dans la programmation orientée objet, le principe de substitution de Liskov (LSP) dicte que les objets d'un sous-type peuvent remplacer leurs objets parents sans altérer le comportement du programme. Cependant, en PHP, remplacer une méthode par une signature de paramètre différente est considéré comme une violation de normes strictes.
Pourquoi s'agit-il d'une violation ?
PHP est un langage faiblement typé. langage, ce qui signifie que le compilateur ne peut pas déterminer le type exact d’une variable au moment de la compilation. Cela signifie que lorsqu'une classe enfant remplace une méthode de classe parent, le compilateur ne peut pas vérifier que la nouvelle signature est compatible avec l'originale.
En conséquence, le compilateur émet un avertissement standard strict, signalant un problème potentiel qui peut provoquer l'arrêt du programme.
Considérons l'exemple suivant :
class Foo
{
public function bar(array $bar) {}
}
class Baz extends Foo
{
public function bar($bar) {}
}
Dans ce code, la méthode Baz::bar() remplace la méthode Foo::bar() avec une signature différente. Le compilateur ne peut pas déterminer si la nouvelle signature est compatible avec l'originale, ce qui peut entraîner des problèmes sur toute la ligne.
Alternatives au remplacement des paramètres de méthode
Au lieu de remplacer les méthodes par des paramètres différents signatures, il existe des approches alternatives pour obtenir la fonctionnalité souhaitée :
En suivant ces alternatives, vous pouvez éviter la violation de normes strictes tout en atteignant la fonctionnalité souhaitée dans votre application PHP.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3