Différences
Ci-dessous, les différences entre deux révisions de la page.
| php-rt:tp2 [2018/02/18 19:27] – [Ecrans] jcheron | php-rt:tp2 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 8: | Ligne 8: | ||
| < | < | ||
| </ | </ | ||
| + | |||
| + | Fichier bat à modifier/ | ||
| + | <sxh bash> | ||
| + | set PATH=%PATH%; | ||
| + | </ | ||
| ===== Notions abordées===== | ===== Notions abordées===== | ||
| Ligne 15: | Ligne 20: | ||
| * Formulaires/ | * Formulaires/ | ||
| * Tableaux associatifs | * Tableaux associatifs | ||
| + | * Utilisation de la Session Http (**USession**) | ||
| ===== Installations ===== | ===== Installations ===== | ||
| * php 7.1 ou supérieur (vérifier avec php -v en invite de commande) | * php 7.1 ou supérieur (vérifier avec php -v en invite de commande) | ||
| Ligne 23: | Ligne 29: | ||
| <sxh bash; | <sxh bash; | ||
| - | composer global require phpmv/ | + | composer global require phpmv/ |
| </ | </ | ||
| + | En cas de problèmes, consulter [[php-rt: | ||
| + | |||
| + | ===== Quick-start ===== | ||
| + | Pour se familiariser avec le framework, faire les 2 quick-start | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| ==== Création du projet ==== | ==== Création du projet ==== | ||
| Ligne 32: | Ligne 44: | ||
| <sxh bash; | <sxh bash; | ||
| cd htdocs | cd htdocs | ||
| - | ubiquity new tp2 -q=semantic | + | ubiquity new tp2 -a |
| </ | </ | ||
| Ouvrir/ | Ouvrir/ | ||
| + | |||
| + | Vérifier que les fichiers **.htaccess** et **app/ | ||
| + | |||
| + | <sxh bash ; | ||
| + | AddDefaultCharset UTF-8 | ||
| + | |||
| + | < | ||
| + | RewriteEngine On | ||
| + | RewriteBase /tp2/ | ||
| + | |||
| + | RewriteCond %{REQUEST_FILENAME} !-f | ||
| + | RewriteCond %{HTTP_ACCEPT} !(.*images.*) | ||
| + | RewriteRule ^(.*)$ index.php? | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <sxh php ; | ||
| + | <?php | ||
| + | return array( | ||
| + | " | ||
| + | ... | ||
| + | </ | ||
| Ligne 63: | Ligne 97: | ||
| - | Tester en allant à l' | + | Tester en allant à l' |
| + | |||
| + | Il est également possible de tester une action à partir de l' | ||
| ==== Action avec paramètre ==== | ==== Action avec paramètre ==== | ||
| Ligne 248: | Ligne 284: | ||
| Pour sauvegarder le nombre en session : | Pour sauvegarder le nombre en session : | ||
| <sxh php; | <sxh php; | ||
| - | SessionUtils:: | + | USession:: |
| </ | </ | ||
| Pour récupérer la variable de session : | Pour récupérer la variable de session : | ||
| <sxh php; | <sxh php; | ||
| - | $number=SessionUtils:: | + | $number=USession:: |
| </ | </ | ||
| Pour vérifier que la variable existe en session : | Pour vérifier que la variable existe en session : | ||
| <sxh php; | <sxh php; | ||
| - | if(SessionUtils:: | + | if(USession:: |
| //Faire quelque chose si la variable existe | //Faire quelque chose si la variable existe | ||
| } | } | ||
| Ligne 265: | Ligne 301: | ||
| Pour récupérer la variable **number** postée : | Pour récupérer la variable **number** postée : | ||
| <sxh php; | <sxh php; | ||
| - | $number=RequestUtils:: | + | $number=URequest:: |
| </ | </ | ||
| + | |||
| + | Pour plus d' | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| ==== Ecrans ==== | ==== Ecrans ==== | ||
| Ligne 320: | Ligne 360: | ||
| * Difficile : génération entre 1 et 20 en 7 essais | * Difficile : génération entre 1 et 20 en 7 essais | ||
| * Mémorisation et affichage des parties réalisées | * Mémorisation et affichage des parties réalisées | ||
| + | |||
| + | |||
| + | ==== Classe métier ==== | ||
| + | |||
| + | On dispose maintenant d'une classe permettant de gérer le jeu, à intégrer dans le dossier **app/ | ||
| + | |||
| + | <sxh php; | ||
| + | <?php | ||
| + | |||
| + | namespace services; | ||
| + | |||
| + | class Game { | ||
| + | const TROUVE=" | ||
| + | const ABANDON=" | ||
| + | const PERDU=" | ||
| + | const ICONS=[self:: | ||
| + | private $number; | ||
| + | private $min; | ||
| + | private $max; | ||
| + | private $essais; | ||
| + | private $maxEssais; | ||
| + | private $statut; | ||
| + | private $messages; | ||
| + | public function __construct($min, | ||
| + | $this-> | ||
| + | $this-> | ||
| + | $this-> | ||
| + | $this-> | ||
| + | $this-> | ||
| + | } | ||
| + | |||
| + | protected function addMessage($content, | ||
| + | $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Génére un nouveau nombre aléatoire | ||
| + | */ | ||
| + | public function generate(){ | ||
| + | $this-> | ||
| + | $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Permet de proposer un nombre, et de vérifier la proposition | ||
| + | * @param int $number | ||
| + | * @return boolean retourne vrai si la partie est gagnée | ||
| + | */ | ||
| + | public function propose($number){ | ||
| + | if($this-> | ||
| + | if(\array_search($number, | ||
| + | $this-> | ||
| + | }else{ | ||
| + | $this-> | ||
| + | if($this-> | ||
| + | $this-> | ||
| + | $this-> | ||
| + | return true; | ||
| + | }else{ | ||
| + | $this-> | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | if($this-> | ||
| + | $this-> | ||
| + | $this-> | ||
| + | }else{ | ||
| + | $this-> | ||
| + | } | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne le nombre aléatoire généré | ||
| + | * @return number | ||
| + | */ | ||
| + | public function getNumber() { | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne la liste au format HTML des propositions effectuées | ||
| + | * @return string | ||
| + | */ | ||
| + | public function getEssais() { | ||
| + | $result=[]; | ||
| + | foreach ($this-> | ||
| + | if($essai==$this-> | ||
| + | $result[]="< | ||
| + | }else{ | ||
| + | $result[]=$essai; | ||
| + | } | ||
| + | } | ||
| + | return \implode(" | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne le nombre d' | ||
| + | * @return number | ||
| + | */ | ||
| + | public function reste(){ | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Termine la partie par abandon | ||
| + | */ | ||
| + | public function terminate(){ | ||
| + | $this-> | ||
| + | $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne la liste des messages émis | ||
| + | * @return array | ||
| + | */ | ||
| + | public function getMessages(): | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retoune les messages et les marque comme étant lus | ||
| + | * @return array | ||
| + | */ | ||
| + | public function readMessages(): | ||
| + | $result=[]; | ||
| + | foreach ($this-> | ||
| + | if(!isset($msg[" | ||
| + | $msg[" | ||
| + | $result[]=$msg; | ||
| + | } | ||
| + | } | ||
| + | return $result; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne le statut de la partie (gagné, perdu, abandon) | ||
| + | * @return string | ||
| + | */ | ||
| + | public function getStatut(): | ||
| + | if(isset($this-> | ||
| + | return $this-> | ||
| + | return "?"; | ||
| + | } | ||
| + | |||
| + | public function getMaxEssais(): | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne le nombre d' | ||
| + | * @return int | ||
| + | */ | ||
| + | public function getNbEssais(): | ||
| + | return \sizeof($this-> | ||
| + | } | ||
| + | /** | ||
| + | * @return int | ||
| + | */ | ||
| + | public function getMin(): | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * @return int | ||
| + | */ | ||
| + | public function getMax(): | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | public function perdu(){ | ||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | public function getStatutIcon(){ | ||
| + | return self:: | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Affichage du résultat (soumet) ==== | ||
| + | **soumet** doit maintenant afficher le nombre d' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ==== Affichage des parties ==== | ||
| + | |||
| + | La liste des parties sera également mémorisée en session, et affichée à l' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||