亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
2. Modèle de stratégie: remplacer les conditions par des classes
3. Tables de recherche et tableaux pour des mappages simples
4. Polymorphisme: laissez les objets décider de leur comportement
5. Modèle d'état ou de commande pour les flux de travail complexes
Bonus: utilisez des expressions de match (PHP 8)
Maison développement back-end tutoriel php Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP

Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP

Aug 01, 2025 am 07:41 AM
PHP Nested if Statement

Utilisez des clauses de garde pour sortir t?t et réduire la nidification; 2. Appliquez le modèle de stratégie pour remplacer les conditions par des classes ou des callables; 3. Remplacez les mappages simples par des tables de recherche ou des tableaux; 4. Utiliser le polymorphisme pour que les objets décident de leur comportement; 5. Utiliser des modèles d'état ou de commande pour les workflows complexes; De plus, utilisez les expressions PHP 8 correspondant à la logique conditionnelle plus propre - ces techniques aplatissent collectivement le code, améliorent la lisibilité et améliorent la maintenabilité en dépla?ant les conditions de la logique principale.

Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP

Lorsque le code PHP commence à s'accumuler avec des blocs IF-Else profonds, il devient difficile de lire, de tester et de maintenir. Bien que les conditions de nidification soient courantes, il existe des alternatives plus propres et plus évolutives. Voici comment se libérer de la pyramide If-Else sans sacrifier la clarté logique.

Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP

1. Clauses de garde: sortir t?t, réduire la nidification

L'une des techniques les plus simples mais les plus efficaces consiste à utiliser des clauses de garde - les rendements précoces qui gèrent les cas de bord ou les états non valides au début d'une fonction.

Au lieu de:

Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP
 fonction processUser ($ user) {
    if ($ utilisateur! == null) {
        if ($ user-> isactive ()) {
            if ($ user-> haspermission ()) {
                // Logique principale ici
                retourner $ this-> SendWelcomeMail ($ utilisateur);
            }
        }
    }
    retourne false;
}

Refactor avec les premières sorties:

 fonction processUser ($ user) {
    if ($ user === null) return false;
    if (! $ user-> isactive ()) return false;
    if (! $ user-> haspermission ()) return false;

    retourner $ this-> SendWelcomeMail ($ utilisateur);
}

Cela maintient la logique principale au niveau supérieur et rend la fonction plus facile à suivre.

Au-delà de la nidification: alternatives à des structures IF-Else profondes en PHP

2. Modèle de stratégie: remplacer les conditions par des classes

Lorsque vous choisissez entre plusieurs comportements en fonction d'un type ou d'un statut, le modèle de stratégie remplace les cha?nes de si-else longues par une carte des classes ou des callables.

Par exemple, au lieu de:

 Fonction CalculaTetax ($ country, $ montant) {
    if ($ country === 'us') {
        Retour $ Montant * 0,07;
    } elseif ($ country === 'de') {
        Retour $ Montant * 0,19;
    } elseif ($ country === 'jp') {
        Retour $ Montant * 0,10;
    }
    retour 0;
}

Utilisez une carte de stratégie:

 $ TaxStrategies = [
    'Us' => fn ($ montant) => $ montant * 0,07,
    'De' => fn ($ montant) => $ montant * 0,19,
    'Jp' => fn ($ montant) => $ montant * 0,10,
]]

Fonction CalculaTetax ($ Country, $ Montant, $ Stratégies) {
    Retour $ Stratégies [$ country] (Montant $) ?? 0;
}

Ou allez plus loin avec des classes dédiées mettant en ?uvre une interface TaxStrategy pour une meilleure séparation et testabilité.


3. Tables de recherche et tableaux pour des mappages simples

De nombreuses échelles IF-Else ne sont que des mappages clés à valeur. Remplacez-les par des tableaux.

Au lieu de:

 fonction getStaturSColor ($ status) {
    if ($ status === 'actif') {
        retour ?vert?;
    } elseif ($ status === 'en attente') {
        retour ?jaune?;
    } elseif ($ status === 'inactive') {
        retour ?gris?;
    } elseif ($ status === 'bloqué') {
        retour ?rouge?;
    }
    retour ?inconnu?;
}

Utilisez une recherche:

 fonction getStaturSColor ($ status) {
    $ couleurs = [
        'actif' => 'vert',
        'en attente' => 'jaune',
        'inactif' => 'gris',
        'bloqué' => 'rouge'
    ]]

    retourner $ couleurs [$ status] ?? 'inconnu';
}

Il est plus rapide, plus propre et plus facile à étendre ou même à charger à partir de la configuration.


4. Polymorphisme: laissez les objets décider de leur comportement

Si vos conditions dépendent des types d'objets, utilisez le polymorphisme . Définissez une méthode dans une classe de base ou une interface et laissez les sous-classes implémenter leur propre version.

Exemple:

 Notification d'interface {
    Fonction publique Send ($ message);
}

Classe EmailNotification implémente la notification {
    Fonction publique Envoyer ($ message) {/ * Envoyer par e-mail * /}
}

classe SMSNotification implémente la notification {
    Fonction publique Envoyer ($ message) {/ * Envoyer via SMS * /}
}

// Non si-else nécessaire
fonction notify (utilisateur $ user, notification $ canal, $ msg) {
    $ channel-> Send ($ msg);
}

Désormais, la décision de l' envoi est encapsulée - aucune condition nécessaire sur le site d'appel.


5. Modèle d'état ou de commande pour les flux de travail complexes

Pour des règles commerciales complexes qui changent en fonction de l'état, considérez le modèle d'état ou le modèle de commande . Ceux-ci vous permettent d'encapsuler le comportement et les transitions sans conditionnels tentaculaires.

Par exemple, une commande qui se comporte différemment en attente, expédiée ou annulée peut avoir ses propres objets d'état qui définissent des actions valides.

Alternativement, utilisez une carte de commande :

 $ actions = [
    'create' => new CreateOrderHandler (),
    'Annuler' => new annuleorderHandler (),
    'Refund' => new REFUNDHANDLER (),
]]

$ handler = $ actions [$ command] ?? lancer un nouveau invalidComMandexception ();
$ handler-> EXECUTE ($ data);

Cela évite les blocs de commutation longue / IF lors du routage des commandes.


Bonus: utilisez des expressions de match (PHP 8)

match de PHP 8 est une alternative plus propre au switch et peut souvent remplacer les cha?nes IF-Else:

 $ status = 'actif';

$ label = match ($ status) {
    'actif' => 'utilisateur actif',
    ?en attente? => ?Approbation en attente?,
    'inactif' => 'inactif',
    par défaut => 'statut inconnu'
};

Il est basé sur l'expression, de type type et ne nécessite pas de déclarations break .


La clé n'est pas d'éliminer complètement les conditions - elles sont nécessaires - mais de les sortir de votre logique principale . Utilisez les rendements précoces, les structures de données et les modèles orientés objet pour garder votre code plat, lisible et ouvert pour l'extension.

Fondamentalement: lorsque vous voyez une nidification profonde, demandez - peut-il être une carte, une méthode ou un retour? Souvent, la réponse est oui.

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Du code flèche au code nettoyant: stratégies pour simplifier les IFS nichés Du code flèche au code nettoyant: stratégies pour simplifier les IFS nichés Jul 30, 2025 am 05:40 AM

Pour éliminer la complexité des instructions imbriquées, vous devez utiliser la clause de garde pour revenir à l'avance, fusionner les expressions conditionnelles, remplacer les branches par des modèles polymorphes ou politiques et utiliser des valeurs de mappage de table de recherche; 1. Utilisez la clause de garde pour traiter les conditions aux limites à l'avance et quitter; 2. Utilisez des opérations logiques pour remplir et des conditions connexes; 3. Utilisez des modèles polymorphes ou politiques pour remplacer les branches de type complexe; 4. Utiliser des dictionnaires et autres structures de données pour remplacer la cartographie conditionnelle simple; En fin de compte, rendre le code plat et linéaire, améliorant la lisibilité et la maintenabilité.

Le co?t caché: implications de performance des conditions de PHP profondément imbriquées Le co?t caché: implications de performance des conditions de PHP profondément imbriquées Jul 30, 2025 am 05:37 AM

DeeplyNestedConditionalsInCreACognitiveLoAdandDebuggingtime, faisant de la codehardetroundère et de la refactation de refactorise de réalisation et de garantie

Clauses de garde PHP: l'alternative supérieure aux déclarations imbriquées Clauses de garde PHP: l'alternative supérieure aux déclarations imbriquées Jul 31, 2025 pm 12:45 PM

GuardClauseSaSaSEuperioralterativeToTeShedIfstatementsInphpBecausethereDeduceComplexityByHandling représente-t-il.

Architecting Control Flow: Quand utiliser (et éviter) IFS imbriqué en php Architecting Control Flow: Quand utiliser (et éviter) IFS imbriqué en php Jul 31, 2025 pm 12:42 PM

NestedifstatementsaCceptable ImagePhpwhentheyreflectlogicalHierarchies, telsguardcauses withClearlyExits, hiérarchicalbusinesslogic, orShalnesting (1–2vel

IFS imbriqué comme une odeur de code: identifier et rectifier une logique trop complexe IFS imbriqué comme une odeur de code: identifier et rectifier une logique trop complexe Aug 01, 2025 am 07:46 AM

DeeplySpestedIfstatementsreducereadability andinCreaSecognitiveLoad, makecodehardetoDBugandtest.2.EtheyoftenviolatethesingleRespibilityprinpilebycombiningMultipleConcernsinonefunction.3.GuardCauseseswitheredRepleconcenSinLogicAndImproveclanity

Gestion et validation des erreurs efficaces avec des structures IF-Else imbriquées Gestion et validation des erreurs efficaces avec des structures IF-Else imbriquées Jul 31, 2025 am 11:59 AM

DeeplyShestedIF-elseblocksreducecoderareadabilité et de même ma?tre

Débogage de l'enfer: naviguer et fixer des structures imbriquées complexes si Débogage de l'enfer: naviguer et fixer des structures imbriquées complexes si Aug 01, 2025 am 07:33 AM

UsearlyreturnstofllattennessedIfstructures et improveadability par handling-GecasesFirst.2.ExtractComplexCondutionSInToScriptiveBooleanvariableStomaKelogicicSelf-Document.3.replacerole-oryty

Apprivoiser la pyramide de Doom: refactoring a imbriqué des déclarations en php Apprivoiser la pyramide de Doom: refactoring a imbriqué des déclarations en php Aug 01, 2025 am 12:33 AM

Pour résoudre le problème de la ?pyramide de la mort? causé par des déclarations imbriquées en PHP, les cinq méthodes de reconstruction suivantes doivent être adoptées: 1. Utilisez un retour précoce (GuardClauses) pour aplatir le contr?le des conditions pour éviter une nidification profonde; 2. Extraire les conditions complexes dans une méthode privée avec des noms clairs pour améliorer la lisibilité et la réutilisabilité; 3. Utilisez des objets de vérification ou du mode middleware pour des processus complexes pour obtenir une logique de vérification composable et extensible; 4. Utilisez des opérateurs de fusion ternaires ou vides uniquement dans des scénarios simples pour éviter les expressions ternaires imbriquées; 5. Utilisez des exceptions pour remplacer le retour de la cha?ne d'erreur, gérer les erreurs de manière centralisée et garder la logique principale pure. L'objectif ultime est de rendre le code plus s?r, plus facile à tester et plus facile à maintenir par une défaillance rapide, une séparation logique et des modèles de conception appropriés.

See all articles