Salut tout le monde,
j'ai appris à coder sur le tas, comme beaucoup d'entre nous. J'ai donc appris les bases de PHP sur l'ancien Openclassroom, le site du Zéro... Ce n'était que le début et à force de pratiquer, j'ai réussi à beaucoup m'améliorer par rapport à mes débuts.
Mais j'ai toujours énormément de mal avec certaines notions de programmation, et notamment les classes en PHP. L'exemple qui est toujours pris pour l'expliquer, c'est un personnage auquel on pourrait faire faire tout un tas d'actions via des fonctions. Sauf que j'ai du mal à voir comment (et surtout quel intérêt ça a) on pourrait appliquer une classe pour un site internet, un blog par exemple.
J'aimerais avoir un exemple concret, et au plus simple si possible. Juste au moins pour saisir l'intérêt des classes...
Je vous remercie d'avance !
Le 27 mai 2018 à 03:31:45 SpectreVisible a écrit :
Salut tout le monde,j'ai appris à coder sur le tas, comme beaucoup d'entre nous. J'ai donc appris les bases de PHP sur l'ancien Openclassroom, le site du Zéro... Ce n'était que le début et à force de pratiquer, j'ai réussi à beaucoup m'améliorer par rapport à mes débuts.
Mais j'ai toujours énormément de mal avec certaines notions de programmation, et notamment les classes en PHP. L'exemple qui est toujours pris pour l'expliquer, c'est un personnage auquel on pourrait faire faire tout un tas d'actions via des fonctions. Sauf que j'ai du mal à voir comment (et surtout quel intérêt ça a) on pourrait appliquer une classe pour un site internet, un blog par exemple.
J'aimerais avoir un exemple concret, et au plus simple si possible. Juste au moins pour saisir l'intérêt des classes...
Je vous remercie d'avance !
Très simple : Une classe qui sert de routeur, une autre qui sert de contrôleur, une qui sert de modèle, une de vue... Oui c'est le modèle MVC, mais en gros une classe c'est surtout pour définir un périmètre d'action sur quelque chose, imaginons que je veux créer une classe qui s'occupe de la gestion avec la BDD au niveau des utilisateurs, avec une classe, j'peux définir mes méthodes qui vont traiter différents cas (obtenir juste le pseudo, obtenir le profil complet, bannir quelqu'un, etc.)
Prend une class simple article pour un blog : pour un article tu as un auteur une date un contenu...
Tu va pouvoir récupérer tous ça directement via les fonctions getDate, getContenue...
Ça permet de formaliser les données et structures ton application...
Regarde des cours sur la poo !
Class je ne sais pas mais une function c'est pratique
Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
Classje ne sais pas mais unefunctionc'est pratique
Alors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message ![]()
Le 28 mai 2018 à 13:53:08 thymotep a écrit :
Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
Classje ne sais pas mais unefunctionc'est pratiqueAlors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
[15:27:10] <PetitSumo>
Le 28 mai 2018 à 13:53:08 thymotep a écrit :
Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
Classje ne sais pas mais unefunctionc'est pratiqueAlors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe ![]()
Le 28 mai 2018 à 22:16:33 -[Franckyi]- a écrit :
[15:27:10] <PetitSumo>
Le 28 mai 2018 à 13:53:08 thymotep a écrit :
Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
Classje ne sais pas mais unefunctionc'est pratiqueAlors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe
Si tu savais lire tu n'aurais pas eu le besoin d'écrire ce message
https://www.jeuxvideo.com/spectrevisible/forums/message/955710090
Le 29 mai 2018 à 10:12:24 PetitSumo a écrit :
Le 28 mai 2018 à 22:16:33 -[Franckyi]- a écrit :
[15:27:10] <PetitSumo>
Le 28 mai 2018 à 13:53:08 thymotep a écrit :
Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
Classje ne sais pas mais unefunctionc'est pratiqueAlors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe
Si tu savais lire tu n'aurais pas eu le besoin d'écrire ce message
https://www.jeuxvideo.com/spectrevisible/forums/message/955710090
Tu dis clairement que tu ne sais pas ce qu'est une class en PHP, or la personne qui a posté le sujet, demande des infos aux sujets des classes, donc abstient toi de commenter, vu que tu ne sais pas.
Merci.
Le 29 mai 2018 à 10:42:10 thymotep a écrit :
Le 29 mai 2018 à 10:12:24 PetitSumo a écrit :
Le 28 mai 2018 à 22:16:33 -[Franckyi]- a écrit :
[15:27:10] <PetitSumo>
Le 28 mai 2018 à 13:53:08 thymotep a écrit :
> Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
>
Classje ne sais pas mais unefunctionc'est pratiqueAlors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe
Si tu savais lire tu n'aurais pas eu le besoin d'écrire ce message
https://www.jeuxvideo.com/spectrevisible/forums/message/955710090Tu dis clairement que tu ne sais pas ce qu'est une class en PHP, or la personne qui a posté le sujet, demande des infos aux sujets des classes, donc abstient toi de commenter, vu que tu ne sais pas.
Merci.
"abstiens-toi"
Le 29 mai 2018 à 11:25:58 PetitSumo a écrit :
Le 29 mai 2018 à 10:42:10 thymotep a écrit :
Le 29 mai 2018 à 10:12:24 PetitSumo a écrit :
Le 28 mai 2018 à 22:16:33 -[Franckyi]- a écrit :
[15:27:10] <PetitSumo>
> Le 28 mai 2018 à 13:53:08 thymotep a écrit :
>> Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
> >
Classje ne sais pas mais unefunctionc'est pratique>
> Alors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe
Si tu savais lire tu n'aurais pas eu le besoin d'écrire ce message
https://www.jeuxvideo.com/spectrevisible/forums/message/955710090Tu dis clairement que tu ne sais pas ce qu'est une class en PHP, or la personne qui a posté le sujet, demande des infos aux sujets des classes, donc abstient toi de commenter, vu que tu ne sais pas.
Merci.
"abstiens-toi"
Merci pour cette remarque ![]()
Surtout j’ai répondu simplement à la question
Le 29 mai 2018 à 16:14:56 thymotep a écrit :
Le 29 mai 2018 à 11:25:58 PetitSumo a écrit :
Le 29 mai 2018 à 10:42:10 thymotep a écrit :
Le 29 mai 2018 à 10:12:24 PetitSumo a écrit :
Le 28 mai 2018 à 22:16:33 -[Franckyi]- a écrit :
>[15:27:10] <PetitSumo>
>> Le 28 mai 2018 à 13:53:08 thymotep a écrit :
>>> Le 27 mai 2018 à 19:29:22 PetitSumo a écrit :
>> >
Classje ne sais pas mais unefunctionc'est pratique>>
>> Alors pourquoi tu réponds si tu ne sais pas ? Ça va pas aider la personne qui a posté le message
>
>Je tiens à te rappeler qu'il y a Google.
En l'occurence c'est toi qui ne sait pas ce que c'est une classe
Si tu savais lire tu n'aurais pas eu le besoin d'écrire ce message
https://www.jeuxvideo.com/spectrevisible/forums/message/955710090Tu dis clairement que tu ne sais pas ce qu'est une class en PHP, or la personne qui a posté le sujet, demande des infos aux sujets des classes, donc abstient toi de commenter, vu que tu ne sais pas.
Merci.
"abstiens-toi"
Merci pour cette remarque
As-tu des connaissance en PHP ?
Pour comprendre une classe il faut comprendre la programmation orienté objet, ce n'est pas propre au PHP, mais à de nombreux langages.
Ensuite, il y a différente façon de l'interpréter, mais souvent le plus facile est le modèle MVC comme cité plus haut.
Si tu t'intéresse aux frameworks PHP, tu comprends plus facilement les usages de la POO car ils sont fortement encadré par une logique définis par le framework.
Par exemple, avec Yii (qui est simple selon moi pour débuter), tu as des modèles, des views, des controlleurs, et des components.
Les modèles sont des classes servant à mapper des objets de la base de donnée (principe de la POO, la classe est "le plan de fabrication" d'un objet (qui lui est du coup l'instance d'une classe). et du coup ses attributs sont basés sur les colonnes d'une table de la base de donnée, et les clés étrangères/relations y sont également définis grâce à des fonctions qu'offre le framework.
Les contrôleurs sont des classes d'un autre genre, il ne faut pas oublier que l'on parle de site web, donc on affiche généralement plus d'une vue, plus d'une URL, ... Sous Yii, les contrôleurs sont des classes qui comporte des actions, la logique de Yii est de mapper "magiquement" des classes et fonctions à des URLs de ton site (bon enfaite c'est pas magique, ils font juste que le index.php a un moment appel une classe qui exploite des propriétés de PHP permettant d'invoquer une classe ou sa méthode à partir d'une string de l'URL, ou peut-être des call_user_func, ...)
Ainsi le contrôleur "machin" avec la classe "actionFaitUnTruc" se mappe à tonsite.com/machin/faitUnTruc
par exemple.
(y a aussi des routers, mais Yii te force pas trop la main sur ça, à l'inverse d'autres frameworks qui t'obligeront à définir tes routes toi-même)
Les components eux sont des classes utilitaire que tu invoque généralement pour appliquer une logique de traitement à différents endroits, et que tu aurais besoin d'instancier (sinon autant utiliser un Trait si tu veux juste partager tes fonctions...)
Et enfin, les views eux ne sont pas des classes, mais des fichier html contenant la page, mais... Ils sont charger par PHP à travers une classe qui sert à gérer les templates (souvent une dépendance comme Twig, Smarty, Blade, ...) qui est une classe... qui sert à charger le HTML pour le echo proprement à l'utilisateur et qui est donc exploité dans tout les contrôleurs de Yii en général. (maintenant grâce à une intégration plus ou moins facile, ça peut s'utiliser plus ou moins facilement...)
'fin tout ça pour dire qu'il faut comprendre la POO et le MVC pour saisir l'intérêt d'une classe, j'ai parler du cas PHP, mais c'est vrai pour tout les langages.
Pour un débutant je ne conseil pas d'utiliser un FrameWork, MVC c'est comme de conseiller à une personne d'apprendre le CSS en utilisant bootstrap.
Le 30 mai 2018 à 15:46:52 PetitSumo a écrit :
Pour un débutant je ne conseil pas d'utiliser un FrameWork, MVC c'est comme de conseiller à une personne d'apprendre le CSS en utilisant bootstrap.
"je ne conseille pas"
Le 30 mai 2018 à 17:17:54 thymotep a écrit :
"je ne conseille pas"
Oui.
Le 30 mai 2018 à 15:46:52 PetitSumo a écrit :
Pour un débutant je ne conseil pas d'utiliser un FrameWork, MVC c'est comme de conseiller à une personne d'apprendre le CSS en utilisant bootstrap.
Pour les bases des bases peut-être pas, mais pour comprendre les classes, la POO, ... appliqué au web, un framework aide beaucoup (sur ce point je déconseille fortement de commencer par Symfony, mais Yii fait le job sur ce point à mes yeux..., je dirais moins ça pour Laravel qui a une structure plus "particulière", mais bon...)
'fin un framework sert à simplifier, tu n'apprends pas à faire du CSS avec Bootstrap, mais tu apprends à faire rapidement un site responsive en te simplifiant justement le CSS.
En PHP, un framework te simplifie la recherche d'une structure, l'organisation de tes classes, et te pousse à les utiliser en respectant certaines pratiques. Tu n'apprends pas le PHP avec mais tu apprends à mieux organiser ton code et à faire tout doucement usage de POO pour tes propres besoins quand tu y es amené... Et ça t'évite de te prendre trop la tête avec la base de données ou le routage des URLs.
Salut! ![]()
Je te conseille la formation Programmation Orientée Object en PHP sur Grafikart !
https://www.grafikart.fr/formations/programmation-objet-php
La progression est très bien faite je trouve!
Ces sites peuvent être sympas mais pour un débutant ça ne sers à rien de tout apprendre, il faut qu'il se mette en tête un projet personnel comme un petit blog, forum, t'chat. On apprend sur le terrain pas sur de la théorie car rien ne vaut la pratique.