IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Quelle est la bonne pratique de mise en page pour long if


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut Quelle est la bonne pratique de mise en page pour long if
    Bonjour.

    J'ai une petite question concernant la bonne pratique pour la "mise en page" (je ne suis pas sûr que ce soit le bon terme) du code dans le cas d'un if assez long.
    Je m'explique, je dois faire un test sur des données postées d'un formulaire.
    J'ai des arrays et je suis dans l'impossibilité de les tester avec "empty" comme ils sont issues du formulaire.

    Je me demande donc quelle est la meilleur pratique.
    Faut-il mieux avoir un if long comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(empty($_POST['id']) && empty($_POST['num']) && empty(array_filter($_POST['bb'])) && empty(array_filter($_POST['aa'])) && empty(array_filter($_POST['b4'])) && empty(array_filter($_POST['b5'])) && empty(array_filter($_POST['b6'])) && empty(array_filter($_POST['b8'])) && empty(array_filter($_POST['a8'])) && empty(array_filter($_POST['a9'])) && empty(array_filter($_POST['a0'])) && empty(array_filter($_POST['a1'])) && empty(array_filter($_POST['a2']))) {
    ou mettre les arrays dans des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $tcPOST = array_filter($_POST['tc']);
    				$bbPOST = array_filter($_POST['bb']);
    				$aaPOST = array_filter($_POST['aa']);
    				$a1POST = array_filter($_POST['a1']);
    				$a2POST = array_filter($_POST['a2']);
    				$a3POST = array_filter($_POST['a3']);
    				$b1POST = array_filter($_POST['b1']);
    				$b2POST = array_filter($_POST['b2']);
    				$b3POST = array_filter($_POST['b3']);
    				$b4POST = array_filter($_POST['b4']);
    				$b5POST = array_filter($_POST['b5']);
     
    				if(empty($_POST['id']) && empty($_POST['num']) && empty($bbPOST) && empty($aaPOST) && empty($a1POST) && empty($a2POST) && empty($a3POST) && empty($b1POST) && empty($b2POST) && empty($b3POST) && empty($b4POST) && empty($b5POST) ) {
    Si quelqu'un peut me dire comment faut-il mieux procéder, ce serait gentil.

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    pourquoi as-tu besoin d'utiliser array_filter() ?
    Tu veux tester que TOUTES les valeurs reçues pour chaque array ne sont pas vide ?

    Sinon, pour chaque array, si tu veux AU MOINS une valeur, empty suffit.

    D'autre part, on peut simplifier l'écriture :
    if( !empty( $var1, $var2, $array1, $array2,......... ) ){
    Dernière modification par Invité ; 28/09/2015 à 14h12.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    D'autre part, on peut simplifier l'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( !empty( $var1, $var2, $array1, $array2,......... ) ){
    empty() ne supporte pas plusieurs paramètres
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oups! J'ai naïvement cru qu'il fonctionnait comme isset().

    Voilà une modification à prévoir pour PHP 8 !



    OK. Je remballe mes gaules...

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Bonjour et merci pour vos réponses.

    Effectivement je veux tester si toutes mes valeurs sont bien vides.
    Dans un 1er temps j'avais utilisé empty mais les arrays provenant d'un formulaire, ils ne sont jamais vide. J'ai donc vu que l'utilisation d'array_filter sans callback permet de suppimer les "vides"(en plus des 0, FALSE), seulement l'utilisation de cette fonction rallonge encore mon if (qui n'étais pas court de base). C'est pour ça que je demande si il y a une meilleur façon de procéder ou sinon de savoir s'il fallait mettre les $_POST filtrés dans des variables pour raccourcir le if ou tout laisser en brut dans le if.

    La condition fonctionne bien, c'est plus une question sur la "bonne pratique" qui donne un code plus propre.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu t'en rend compte, une multitude de condition est illisible.
    Dans ce cas il est sans doute plus judicieux de dédier une fonction à la tache.

    Quelque chose comme ça devrait faire le job (pas testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if(areFieldsEmpty()) {
        //....
    }
     
    function areFieldsEmpty() {
        foreach($_POST as $field) {
    		$result = null;
    		if(is_array($field)) {
    			$result = empty(array_filter($field));
    		} else {
    			$result = empty($field);
    		}
     
    		if(!$result)
    			return false;
        }
     
    	return true;
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle est la bonne pratique pour accéder optimalement à un membre d'un array?
    Par billybobbonnet dans le forum Développement Windows
    Réponses: 4
    Dernier message: 01/09/2014, 15h13
  2. Réponses: 1
    Dernier message: 19/03/2013, 12h19
  3. Réponses: 5
    Dernier message: 08/04/2011, 11h55
  4. Quelle est la bonne pratique
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 16/04/2010, 16h13
  5. [c# 2.0]TryParseExact Quelle est la bonne syntaxe ?
    Par Pierre8r dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/05/2006, 20h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo