Maison > développement back-end > tutoriel php > Le remplacement des signatures de méthodes peut-il être évité dans les normes PHP strictes ?

Le remplacement des signatures de méthodes peut-il être évité dans les normes PHP strictes ?

Linda Hamilton
Libérer: 2024-10-18 06:10:03
original
244 Les gens l'ont consulté

Can Overriding Method Signatures Be Avoided in Strict PHP Standards?

Évitement strict des normes : remplacement des paramètres de méthode

En PHP, des normes strictes imposent le respect de règles de codage prédéfinies pour garantir la fiabilité du code. L’une de ces normes interdit de remplacer les paramètres de la méthode. Considérez le code suivant :

<code class="php">class Foo
{
    public function bar(array $bar) {}
}

class Baz extends Foo
{
    public function bar($bar) {}
}</code>
Copier après la connexion

Ici, la méthode de substitution dans Baz (avec un seul paramètre) diffère en signature de la méthode d'origine dans Foo (qui prend un tableau comme argument). En conséquence, PHP déclenche un avertissement standard strict.

Cette violation découle du principe de substitution de Liskov (LSP), une règle de conception POO stipulant qu'un sous-type (Baz) peut remplacer de manière transparente son supertype (Foo) sans altérer comportement du programme. Dans les langages à typage fort, modifier les signatures de méthode dans un sous-type créerait une surcharge de méthode, mais dans PHP faiblement typé, une telle distinction est impossible.

Pour garantir la conformité LSP et éviter de modifier le comportement de la méthode, des normes strictes empêchent la modification de la méthode. signatures dans les méthodes de remplacement. Cet avertissement sert de rappel pour maintenir la cohérence entre les méthodes des classes parent et enfant, évitant ainsi les bogues potentiels dus à des incompatibilités de signature de méthode lors de l'invocation de la méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal