explication de correction

Eléphant du PHP | 166 Messages

19 juil. 2017, 18:39

Voici un corrigé :
<?php
class Create
{
public function getCreate() // WARNING: le but d'une fonction est d'appliquer à une donnée passée en argument un traitement qui sera retournée à la fin
  {
   //si le formulaire est soumis
   if(isset($_POST['valider'])) //WARNING: il est préférable de passer cette donnée en paramètre de la fonction
   {
     if (!empty($_POST['nom'])) //WARNING: il est préférable de passer cette donnée en paramètre de la fonction 
      {
   //si le champ name n'est pas vide
        $dossier = $_POST['nom']; //WARNING: il est préférable de passer cette donnée en paramètre de la fonction
   //si le dossier n'existe pas déjà
      if(!file_exists($dossier))
      {
         mkdir($dossier,0777,true);
      echo "Le Dossier -- ".$dossier." -- a bien ete cree";
        }
      }else
      {
        echo "Veuillez rentrer un nom";
      }
   }
  }
}
?>
Comment interprété les 2 premier warning de la correction.

Mammouth du PHP | 1967 Messages

20 juil. 2017, 08:08

La fonction de ta classe crée un dossier selon certaine condition.

Afin de rester le plus généraliste possible, le mieux serait d'utiliser des arguments à ta fonction plutot que d'y utiliser les variable $_POST

Imagine que plus tard, tu te retrouve avec un autre formulaire demandant une ville par exemple, et que tu veuille créer un dossier au nom de cette ville. Tu ne pourra pas réutiliser ta fonction actuelle, car tu l'a limité à la variable $_POST['nom'];

en mettant donc tes 2 variables $_POST['valider'] et $_POST['nom'] en paramètres de ta fonction, tu devra l'appeler en précisant ceux-ci : $create->getCreate($_POST['valider'], $_POST['nom']);
Mais cela te permettra d'appeler plus tard $create->getCreate($_POST['valider'], $_POST['ville']); si besoin
<?php
class Create
{
public function getCreate($validation, $dossier,$titre = 'nom')
{
//si le formulaire est soumis
if(isset($$validation))
{
if (!empty($dossier)) 
{
//si le champ name n'est pas vide
if(!file_exists($dossier))
{
//si le dossier n'existe pas déjà
mkdir($dossier,0777,true);
echo "Le Dossier -- ".$dossier." -- a bien été crée";
}
}else
{
echo "Veuillez rentrer un ".$titre;
}
}
}
}
?>
La variable $titre permet de rester souple au niveau du message d'erreur, mais une valeur par défaut est fourni en cos d’omission du 3ème paramètre.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube