Pourquoi $e ?

Voila je comprends pas un truc, je suis les cours du site de zero (openclassrooms) et bon mis a part que j'ai pas mal de truc que je capte pas, lors d'un TP on doit faire un chat.
Et dans le code y'a ça:
----------------------------------
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
----------------------------------

Pourquoi déjà catch ? Et ensuite ce .$e ? Il sert a quoi ? et pourquoi ça ?

Voila j'ai vraiment du mal avec le php je galère pas mal.

Mais j'ai aussi une autre question pour ceux qui on débuté, voila je pige a peut pres le fonctionnement, les if, else, for.
Mais apres 2 semaines a suivre les cours, si on me balance en plein developpement php en partant de zero je serais vraiment perdu, mais dans la vie reel, on fait des script php de zero ou alors on réutilise les script qui existe et on modifie juste le nom de la BDD et les quelques valeurs qu'on a besoin ?

Poster un commentaire
anonyme
anonyme
7 ans

Je vais essayer de repondre clairement a tes deux questions:
- Version courte: C'est de la gestion d'erreur.
- Version longue: Pour comprendre la mecnaic du try/catch, il faut comprendre 3 notions.
La premiere, le TRY. Le try est un bloc de code qui va s'executer normalement.
Le CATCH, est le bloc qui va 'attraper' (d'ou catch) les exceptions lancés par le try.
Et le lien entre les deux, la fonction THROW. Cette fonction 'lance' les exceptions (des objets exceptions) au catch. Ces dernieres sont declanchees par le TRY.
Le $e comme tu l'appelle, c'est juste le nom de l'
exception attrapee par le catch, et lancee par le try. Elle pourrait s'appeller n'importe comment, c'est son nom dans le catch.
- Pour la deuxieme, tu peux soit dev 'from scratch' (depuis zero), ou alors utiliser des framework, comme Symfony, CakePHP, etc, qui on deja la structure de l'application de faite (connexion a la base de donnee, gestion des routes...), ce qui te permet de te concentrer sur le plus important, la logique.

J'espere que ca t'as eclaire. Au besoin tu me mp.

Mes excuses pour les accents, clavier QWERY.

Pouki
Pouki
7 ans

La fonction catch en PHP permet de gérer les erreurs et exceptions, plutôt que de laisser le serveur réagir de lui même et d'afficher les messages erreurs par défaut au client, qui peuvent parfois contenir des données sensible (Le cas le plus courant étant lors d'une erreur de connexion à une base de données.
En cas d'erreur quelconque, elle "attrape" ("to catch" en anglais) l'erreur.
Le $e->getMessage()* veut simplement dire, met moi dans une variable *$e* le message d'erreur (on l'apelle *$e* pour *error* par convention, mais tu peux aussi bien l’appeler *$toto* ou encore *$mes_couilles_sur_ton_nez

catch* accepte d'autre "méthodes" (je suis pas trop sûr du nom), comme par exemple *$e->getLine();* pour mettre dans la variable *$e la ligne de ton script php qui a causé l'erreur.

Lebatard
Lebatard
7 ans

@Pouki: Ahhhhhhhh super merci merci beaucoup ^^ j'y vois deja beaucoup plus clair :) et bien expliqué ;)
Je mets en fav pour m'en souvenir :)

anonyme
anonyme
7 ans

@Pouki: Oui c'est bien méthode. Cependant c'est uniquement propre a l'objet Exception. Si tu code ta propre exception tu peux y mettre différentes méthodes.

anonyme
anonyme
7 ans

@Pouki: Nostalgie quand j'ai lu : $toto ...

Pouki
Pouki
7 ans

@Bunta:
*$toto = "hello world";
echo $toto;*

Kaazhan
Kaazhan
7 ans

catch ca sert a récuperer une exeption.
pour faire très simple, les erreurs sont loggués quelque part, et catch permet d'acceder a cette liste. $e est la dernière erreur enregistrée.

Pour ta deuxieme question, ca dépend, je suis dev php, j'écris du php (pas des scripts, ca c'est mal, mais des jolies classes)

Lebatard
Lebatard
7 ans

@Kaazhan: Mais du coup catch $e faut les utiliser tout le temps ? Enfin quand on connecte une bdd ?
Ce qui me fait chier c'est que j'ai suivi les tutos, donc $_POST etc mais là, le .$e il arrive comme ça alors c'est bien possible que je l'ai raté mais, j'ai du mal a comprendre pourquoi exactement .$e

C'est important de savoir ce que chaque mot en php veut dire ou on peut en faire abstraction pour certains ?

Donc ton code tu comprends tout et part de zero pour le faire ?
J'ai du mal a me dire que je peux y arriver là :x si déjà au premier TP je n'y arrive pas !

Kaazhan
Kaazhan
7 ans

@Lebatard: catch c'est un mot-clé comme if ou else ou where. c'est juste qu'il serta rédcupérer une erreur. cette erreur on l'appelle $e, $exect, etc... la c'est $e mais ca peut être n'importe quel nom. c'est juste la variable qui contient ton erreur.

Pouki
Pouki
7 ans

@Lebatard: L'utiliser sur chaque requête SQL est selon moi indispensable. Sans, tu n'auras pas de soucis 99% du temps, mais en cas d'erreur, même sur un simple SELECT, ta requête entière et donc le nom de ta table et des champs est balancé dans le navigateur du client et c'est macher le travail de ceux qui cherchent à faire de l'injection SQL (bien que tu puisse aussi restreindre l'affichage dans le php.ini).

Mais rien ne t’empêche de l'utiliser sur n'importe quelle autre fonction PHP. C'est toujours mieux d'afficher un message d'erreur clair à l'utilisateur, plûtot qu'un script qui donne l'impression de fonctionner mais qui en fait a foiré pour x raison.

Chipiok
Chipiok
7 ans

J'ai jamais essayé vraiment de comprendre et sans doute d'autres choual répondront mieux que moi mais en gros catch "attrape" l'exception (attrape le bug en gros) et $e est la variable où est enregistrer l'erreur pour te l'afficher.

Si tu souhaites devenir développeur, tu seras très probablement confronté à faire des scrpits de zéro en soit c'est pas si compliqué dans la majeur partie des cas et ce que tu feras le plus souvent c'est des scripts faisant la liaison entre ta page et la base de données soit pour envoyer les données d'un formulaire à la bdd soit pour récupérer et afficher ses données.

Bien sur ils existent bien d'autres types de scripts plus spécifique mais une fois la logique acquise c'est pas très compliqué.

Divi
Divi
7 ans

Le catch fait parti d'un duo try/catch. Ca sert notamment à gérer (attraper) une exception qui aurait été déclenchée dans le try" et qui s'avère être fatale dans le cas contraire, comme l'erreur de connexion impossible à une base de données par exemple (erreur 500, page blanche).
Ca te permet aussi de gérer le comportement d'une application dans le développement objet voire SOLID ( https://fr.wikipedia.org/wiki/SOLID_(informatique) ). Par exemple, tu tentes de récupérer un utilisateur par son email, tu "throw" une exception "UserNotFoundException" que tu auras créé, et dans ton contrôleur tu pourras catch cette exception et envoyer un joli message d'erreur à ton utilisateur. Ca évite les conditions if/elseif à répétition dans le contrôleur et qui n'ont rien à foutre là en MVC.

Du coup, dans ton exemple, le catch est totalement inutile. Dans le sens où tu affiches le contenu de l'exception, comme le serveur le ferait si elle n'était pas gérée.

No_Offense

Tu fais un truc du type :
try{ Mon bloc d'instruction qui risque de renvoyer des erreurs}
catch(Exception $uneVariableSouventAppelleeE)
{ Mon bloc d'instruction en cas d'erreur : généralement on l'affiche en faisaint $uneVariableSouventAppelleeE->getMessage();}

Le try sert à encadrer les blocs de code qui throw les exceptions.
Le catch récupère l'Exception renvoyée, et l'assigne à une variable de ton choix, en général on l'appelle $e pour Exception et parce que c'est court.
Le $e->getMessage() est une méthode (une fonction si tu préfère), de l'objet Exception, qui contient le message d'erreur.
Le die() arrête le code en cours (pour prévenir d'éventuels bugs ou d'autres erreurs), et affiche ce que tu met entre parenthèses. Les histoires de guillemet c'est parce qu'il a mélangé du texte (Erreur :) et du code ($e->getMessage() ).

bybbo
bybbo
7 ans

Pour ta deuxième question, le problème vient justement de tous ces cours en ligne que l'on trouve pour "devenir développeur rapidement".

Je n'ai rien contre ces tutoriels, au contraire, mais il faut savoir que développer ne consiste pas en simplement écrire des lignes de codes. Il faut d'abord apprendre et surtout comprendre une bonne partie de théorie (notamment l'algorithmie, la logique, les différents concepts de programmation, etc...) C'est ce qui va permettre d'être ensuite autonome dans la réalisation de projets complets.

C'est ce que je reproche à tous ces cours en ligne, bien que très bien fait. Ils laissent penser que l'on peut devenir un vrai développeur comme cela, alors que sans toute les bases théoriques derrière, on ne deviendra jamais un très bon développeur.

Attention ça ne veut pas dire que cette théorie ne s'acquiert que sur les bancs de l'école, nombreux sont les excellents développeurs qui ont tout appris en autodidacte. Mais cela demande de nombreuses heures de travail, l'étude des concepts de génie logiciel que l'on trouve dans d'excellents livres, etc...


Lebatard
Lebatard
7 ans

@bybbo: ouais c'est pour ça j'ai pas mal de doutes.
Est ce qu'un mec qui installe phpBB sur un serveur en changeant juste le nom de la BDD et les identifiants est un développeur php alors qu'il a touché quelques lignes mais qu'on lui a dit lesquelles...

Sur openclassrom y a moyen d'avoir un équivalent bac+3 développeur backend en 12 mois financé par pôle emploi. C'est super excitant mais bon, j'ai du mal à croire qu'en 1 an en suivant leur cours qu'on puisse devenir un super développeur...
Après je pense qu'avec on peut refaire une application quasiment à l'identique, genre, refaire une application comme airbnb, mais par contre faire une application en partant de rien en essayant d'inventer un truc qui n'existe pas, j'y crois pas trop.

bybbo
bybbo
7 ans

@Lebatard: Clairement non, reprendre une application existante, quelle qu'elle soit, en modifiant juste quelques lignes, ne rend pas développeur...Comme dans beaucoup de métier, c'est à la fois les notions théoriques mais surtout la pratique et l'expérience qui rendront professionnel et compétant.

Après les formations longues sur openclassroom je ne connais pas, mais je me dis que sur 12 mois il y a quand même moyen d'acquérir de bonnes connaissances, ce n'est pas comme un simple tutoriel, donc pourquoi pas ! Après en pratiquant à côté en plus de la formation, en réalisant des projets personnels, il y a je pense la possibilité de devenir bon et pouvoir en faire son métier.

Cette page est réservée aux ADULTES

Tu es sur le point d'accéder à un site web qui contient du matériel explicite (pornographie).

Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.


En accédant à ce site, tu acceptes nos conditions d'utilisation.