2017-10-21 93 views
-5

J'ai besoin d'aide et d'explications pour simplifier mon code php.Comment simplifier ce code php

Cela fonctionne, mais il semble que ce soit peu ou trop de code répétitif. Fondamentalement je veux vérifier le jour et l'heure pour montrer le texte préformaté quand le magasin est fermé et le texte différent sur des dispositifs de bureau ou mobiles.

Merci d'avoir lu.

<?php 
    include 'Mobile_Detect.php'; 
    $detect = new Mobile_Detect(); 
    //Get time 
    $hour = date("H", mktime(date("H"))); 
    $day = date("D"); 

    if($day == 'Mon' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }  
    elseif($day == 'Tue' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }       
    elseif($day == 'Wed' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }     
    elseif($day == 'Thu' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }      
    elseif($day == 'Fri' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }    
    elseif($day == 'Sat' && ($hour >= 8 && $hour < 18)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }      
    elseif($day == 'Sun' && ($hour >= 8 && $hour < 18)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
} else { 
    if ($detect->isMobile()) 
    { 
    include 'closed_mobile.php'; 
    } else 
    { 
    include 'closed_desktop.php'; 
    } 
} 
?> 

Regards R.C.

+0

double possible de [code php Simplifier] (https://stackoverflow.com/questions/6779163/simplifying-php-code) – Jacob

+1

Si cela est le code de travail, je dirais que ce devrait être discuté à [CodeReview] (https://codereview.stackexchange.com/), pas ici à Stack Overflow. – agrm

Répondre

0

Essayez:

<?php 
$include = ''; 

    if(in_array($day, array('Mon', 'Tue', 'Wed', 'Thu', 'Fri')) && ($hour >= 6 && $hour < 22)) { 

     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
    } 

    if($day == 'Sat' && ($hour >= 8 && $hour < 18)) { 
     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
    } 

    if($day == 'Sun' && ($hour >= 8 && $hour < 18)) { 
     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
} else { 
    $include = $detect->isMobile() ? 'closed_mobile' : 'closed_desktop'; 
}   

include $include.'php'; 
+0

C'est vraiment sympa! Je vais apprendre l'aray :-) Merci beaucoup! Beaucoup plus petit et plus propre. –

+0

Vous devriez le vérifier pour que d'autres personnes le sachent aussi – SuperDJ

+0

Je pensais: Est-il possible de lire les jours et les heures à partir d'un fichier texte ou csv et l'utiliser dans l'exemple ci-dessus? Fichier texte comme: "Mon", "7", "18" "Mar", "7", "18" "Mer", "7", "18" "Jeu", "7", "18" " " Fri "," 7 "," 18 " " Sat "," 0 "," 0 " " Soleil "," 0 "," 0 "Sam et Dim est fermé ;-) –