Commentaires
king saozer
06/04/2022 à 20:43
Salut! depuis on parle, je ne sais toujours pas dans quel dossier on met le fichier HttpRequest.php

Le concept


Alors Arthur, rappelles moi ce qu'est une requête Http.


Arthur, l'apprenti développeurC'est quand on tape une url dans un navigateur ou que l'on clique sur un lien, ça fait une requête Http !

Effectivement, c'est une des actions qui va déclencher une requête Http, mais il en existe bien d'autre. Pour être plus général, c'est un protocole de communication entre deux ordinateurs, basé sur la norme URI. Autrement dit, c'est une norme qui permet de communiquer entre deux ordinateurs en précisant la demande dans une url. On peut en envoyer avec un navigateur en cliquant sur un lien ou en saisissant une adresse, mais on peut aussi envoyer en validant un formulaire, ou créer des requêtes avec du code, même d'un serveur à un autre.

Mais l'url n'est pas la seule information transmise, il y a un ensemble d'informations qui sont envoyées avec la requête, pour les principales :

  • Les informations de requêtes (l'url, le type, le status, les types d'informations transmises et attendues...)

  • Les informations de navigateur (type de navigateur, version ...)

  • Les informations du client (adresse IP,géolicalisation...)

  • Les données complémentaires (données url, formulaire, données multipart...)

  • ...



Toutes ces données ne sont pas toujours transmises, cela va dépendre des cas, de l'utilisation que l'on fait et de la façon dont certaines actions sur le site sont développées.

Arthur, l'apprenti développeurEn effet il y a beaucoup d'informations dedans

Ne t'inquiète pas, nous n'aurons pas nécessairement besoin de tout, nous allons même aller à l'essentiel, en commençant par créer une classe HttpRequest qui contient les informations qui nous seront utiles. D'après toi lesquelles?

Arthur, l'apprenti développeurJe mettrais tout, ça peut toujours être utile...

C'est la difficulté, ça ne sert à rien de tout mettre, si on ne se sert pas de tout, je te propose donc de choisir les informations qui te paraissent indispensables, et ne t'inquiète pas, si on se rend compte par la suite qu'il nous manque une information, il ne sera pas trop tard pour l'ajouter.

Arthur, l'apprenti développeurJe dirais l'url, le type de requête et les données complémentaires

Une class HttpRequest


Parfait, on va commencer avec ça, une classe php :

{"language" : "application/x-httpd-php","content":"<?php\n\tclass HttpRequest\n\t{\n\t\tprivate $url;\n\t\tprivate $method;\n\t\tprivate $param;\n\t\t\n\t\tpublic function __construct()\n\t\t{\n\t\t\t\n\t\t}\n\t}","filename":"HttpRequest.php"}


Arthur, l'apprenti développeurD'accord, mais si je ne me trompe pas, vu que les propriétés de la classe sont en private, on va avoir du mal à y accéder. Il ne faudrait pas ajouter des accesseurs?

Les accesseurs


Tout à fait, ajoute donc des getter, mais pas de setter !

{"language":"application/x-httpd-php","content":"<?php\n\tclass HttpRequest\n\t{\n\t\tprivate $url;\n\t\tprivate $method;\n\t\tprivate $param;\n\t\t\n\t\tpublic function __construct()\n\t\t{\n\t\t\t\n\t\t}\n\t\t\n\t\tpublic function getUrl()\n\t\t{\n\t\t\treturn $this->url;\t\n\t\t}\n\t\t\n\t\tpublic function getMethod()\n\t\t{\n\t\t\treturn $this->method;\t\n\t\t}\n\t\t\n\t\tpublic function getParams()\n\t\t{\n\t\t\treturn $this->params;\t\n\t\t}\n\t\t\n\t}","filename":"HttpRequest.php"}


Arthur, l'apprenti développeurC'est fait, mais pourquoi pas de setter? On ne pourras jamais assigner de valeur aux propriétés comme ça.

Effectivement, mais d'un autre côté, lorsque tu reçois une requête, elle ne changera pas, il faut donc assigner des valeurs dès la construction de l'objet. Pour les paramètres, on verra ça plus tard, commence déjà par assigner l'url et la méthode, tu peux utiliser la superglobale $_SERVER.

{"language":"application/x-httpd-php","content":"<?php\n\tclass HttpRequest\n\t{\n\t\tprivate $url;\n\t\tprivate $method;\n\t\tprivate $param;\n\t\t\n\t\tpublic function __construct()\n\t\t{\n\t\t\t$this->_url = $_SERVER['REQUEST_URI'];\n\t\t\t$this->_method = $_SERVER['REQUEST_METHOD'];\n\t\t}\n\t\t\n\t\tpublic function getUrl()\n\t\t{\n\t\t\treturn $this->_url;\t\n\t\t}\n\t\t\n\t\tpublic function getMethod()\n\t\t{\n\t\t\treturn $this->_method;\t\n\t\t}\n\t\t\n\t\tpublic function getParams()\n\t\t{\n\t\t\treturn $this->_params;\t\n\t\t}\n\t\t\n\t}","filename":""}


Je pense que la classe est prête, et elle représente ce dont nous avons besoin d'un requête Http, passons à la suite. J'ai terminé cette partie
Demander de l'assistance