Différences
Ci-dessous, les différences entre deux révisions de la page.
php-rt:tp2 [2018/03/10 11:07] – [Contrôleur/actions] 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 267: | Ligne 303: | ||
$number=URequest:: | $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' | ||
+ | |||
+ | {{: | ||
+ | |||
+ |