# Table of Contents - [Bienvenue sur mon espace de cours | David Annebicque](#bienvenue-sur-mon-espace-de-cours-david-annebicque) - [Organisation du cours | Programmation Orientée Objet en PHP (B.U.T.)](#organisation-du-cours-programmation-orient-e-objet-en-php-b-u-t-) - [Présentation | Vue.js BUT](#pr-sentation-vue-js-but) - [Introduction | SAE401](#introduction-sae401) - [Introduction | SAE 301](#introduction-sae-301) - [Présentation | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#pr-sentation-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Présentation | Symfony - B.U.T. MMI / LP DEV](#pr-sentation-symfony-b-u-t-mmi-lp-dev) - [Python | Initiation à l'informatique](#python-initiation-l-informatique) - [Objectifs | Accessibilité (S1) | MMI Nouméa](#objectifs-accessibilit-s1-mmi-noum-a) - [Semestre 3 | Portfolio](#semestre-3-portfolio) - [1. Les sessions | MMI Nouméa](#1-les-sessions-mmi-noum-a) - [Planning | LP MIOT](#planning-lp-miot) - [Page 1 | Qui suis je ? | MMI Nouméa](#page-1-qui-suis-je-mmi-noum-a) - [Référentiel de compétences | Portfolio](#r-f-rentiel-de-comp-tences-portfolio) - [Présentation du module | Accessibilité numérique](#pr-sentation-du-module-accessibilit-num-rique) - [Introduction | BUT INFO / C# / Embarqué](#introduction-but-info-c-embarqu-) - [Introduction | SAE 303 - Dataviz](#introduction-sae-303-dataviz) - [Présentation | Vue.js LP](#pr-sentation-vue-js-lp) - [Séance 1 | Développement Front (S3) | MMI Nouméa](#s-ance-1-d-veloppement-front-s3-mmi-noum-a) - [Séance 1 : Concepts et installation | Vue.js BUT](#s-ance-1-concepts-et-installation-vue-js-but) - [Séance 6 : Routes et API | Vue.js BUT](#s-ance-6-routes-et-api-vue-js-but) - [FAQ | Programmation Orientée Objet en PHP (B.U.T.)](#faq-programmation-orient-e-objet-en-php-b-u-t-) - [Séance A : Introduction à la POO | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-a-introduction-la-poo-programmation-orient-e-objet-en-php-b-u-t-) - [Séance E : Héritage & Encapsulation | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-e-h-ritage-encapsulation-programmation-orient-e-objet-en-php-b-u-t-) - [Séance B : Concepts de la POO | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-b-concepts-de-la-poo-programmation-orient-e-objet-en-php-b-u-t-) - [Séance C : Encapsulation | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-c-encapsulation-programmation-orient-e-objet-en-php-b-u-t-) - [CM2 : Point d'étape | Programmation Orientée Objet en PHP (B.U.T.)](#cm2-point-d-tape-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 19 : Evaluation écrite | Vue.js BUT](#s-ance-19-evaluation-crite-vue-js-but) - [Séance 7 : Evénements et Formulaires | Vue.js BUT](#s-ance-7-ev-nements-et-formulaires-vue-js-but) - [Séance 2 : Boucles et tests | Vue.js BUT](#s-ance-2-boucles-et-tests-vue-js-but) - [Interfaces | Programmation Orientée Objet en PHP (B.U.T.)](#interfaces-programmation-orient-e-objet-en-php-b-u-t-) - [Sujet | SAE401](#sujet-sae401) - [Séance 4-5 : Composants et API | Vue.js BUT](#s-ance-4-5-composants-et-api-vue-js-but) - [Organisation | SAE 301](#organisation-sae-301) - [Séance 3 : Routes | Vue.js BUT](#s-ance-3-routes-vue-js-but) - [Séance 15-16 : Pour réviser | Vue.js BUT](#s-ance-15-16-pour-r-viser-vue-js-but) - [TP Noté | Programmation Orientée Objet en PHP (B.U.T.)](#tp-not-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 18 : TP Noté | Vue.js BUT](#s-ance-18-tp-not-vue-js-but) - [Sujet | SAE 301](#sujet-sae-301) - [Séance 9 : ApiPlatform | Vue.js BUT](#s-ance-9-apiplatform-vue-js-but) - [Livrable | SAE401](#livrable-sae401) - [Séance 10 : VueJs et ApiPlatform (1) | Vue.js BUT](#s-ance-10-vuejs-et-apiplatform-1-vue-js-but) - [Livrable et évaluation | SAE 301](#livrable-et-valuation-sae-301) - [Corrections séance D | Programmation Orientée Objet en PHP (B.U.T.)](#corrections-s-ance-d-programmation-orient-e-objet-en-php-b-u-t-) - [Semestre 2 | Portfolio](#semestre-2-portfolio) - [Semestre 1 | Portfolio](#semestre-1-portfolio) - [Séance 12 : Routes imbriquées // Animations et transitions | Vue.js BUT](#s-ance-12-routes-imbriqu-es-animations-et-transitions-vue-js-but) - [Semestre 4 | Portfolio](#semestre-4-portfolio) - [Organisation et Planning | SAE401](#organisation-et-planning-sae401) - [Séance 8 : Watch et évents | Vue.js BUT](#s-ance-8-watch-et-vents-vue-js-but) - [Séance F : Utilisation d'une base de données et des formulaires | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-f-utilisation-d-une-base-de-donn-es-et-des-formulaires-programmation-orient-e-objet-en-php-b-u-t-) - [Programme National | Portfolio](#programme-national-portfolio) - [Description générale | Programmation Orientée Objet en PHP (B.U.T.)](#description-g-n-rale-programmation-orient-e-objet-en-php-b-u-t-) - [2. Mise en place d'une authentification | MMI Nouméa](#2-mise-en-place-d-une-authentification-mmi-noum-a) - [Séance 0 : Présentation de la ressource en BUT3 | Vue.js BUT](#s-ance-0-pr-sentation-de-la-ressource-en-but3-vue-js-but) - [Séance D : Héritage | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-d-h-ritage-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 11 : VueJs et ApiPlatform (2) | Vue.js BUT](#s-ance-11-vuejs-et-apiplatform-2-vue-js-but) - [Rappels et anciens supports | Vue.js BUT](#rappels-et-anciens-supports-vue-js-but) - [Séance 6-a : TypeScript | Vue.js BUT](#s-ance-6-a-typescript-vue-js-but) - [Séance E : Utilisation d'une base de données et des formulaires | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-e-utilisation-d-une-base-de-donn-es-et-des-formulaires-programmation-orient-e-objet-en-php-b-u-t-) - [Séance H : Des objets dans des classes | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-h-des-objets-dans-des-classes-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 2 | Initiation à l'informatique](#s-ance-2-initiation-l-informatique) - [Séance G : Finalisation | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-g-finalisation-programmation-orient-e-objet-en-php-b-u-t-) - [Séance B : Génération de formulaire en POO | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-b-g-n-ration-de-formulaire-en-poo-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 3 | Initiation à l'informatique](#s-ance-3-initiation-l-informatique) - [Séance 4 : Turtle | Initiation à l'informatique](#s-ance-4-turtle-initiation-l-informatique) - [Séance 3 | LP MIOT](#s-ance-3-lp-miot) - [Mini projet : Site e-commerce | Vue.js BUT](#mini-projet-site-e-commerce-vue-js-but) - [Séance 12 : Projet – Finalisation | Vue.js BUT](#s-ance-12-projet-finalisation-vue-js-but) - [Séance A : Structure de base | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-a-structure-de-base-programmation-orient-e-objet-en-php-b-u-t-) - [Séance C : Traitement des formulaires pour nos livres et auteurs | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-c-traitement-des-formulaires-pour-nos-livres-et-auteurs-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 5 | Initiation à l'informatique](#s-ance-5-initiation-l-informatique) - [Installation de PHPStorm | Programmation Orientée Objet en PHP (B.U.T.)](#installation-de-phpstorm-programmation-orient-e-objet-en-php-b-u-t-) - [3. Email | MMI Nouméa](#3-email-mmi-noum-a) - [Séance I-J | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-i-j-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 8 : Nuxt avancé & SEO | Vue.js BUT](#s-ance-8-nuxt-avanc-seo-vue-js-but) - [Séance 2 | Accessibilité (S1) | MMI Nouméa](#s-ance-2-accessibilit-s1-mmi-noum-a) - [Séance 1 | LP MIOT](#s-ance-1-lp-miot) - [Séance 6-b : Introduction à Nuxt 3 | Vue.js BUT](#s-ance-6-b-introduction-nuxt-3-vue-js-but) - [Séance 7 : Nuxt & API | Vue.js BUT](#s-ance-7-nuxt-api-vue-js-but) - [Séance 11 : Projet – Développement | Vue.js BUT](#s-ance-11-projet-d-veloppement-vue-js-but) - [Séance 3 | Accessibilité (S1) | MMI Nouméa](#s-ance-3-accessibilit-s1-mmi-noum-a) - [Séance 2 | LP MIOT](#s-ance-2-lp-miot) - [Séance 1 | Accessibilité (S1) | MMI Nouméa](#s-ance-1-accessibilit-s1-mmi-noum-a) - [Semestre 6 - Parcours en Alternance | Portfolio](#semestre-6-parcours-en-alternance-portfolio) - [Séance 8 : Exercice complet | Vue.js LP](#s-ance-8-exercice-complet-vue-js-lp) - [Séance 4 | Initiation à l'informatique](#s-ance-4-initiation-l-informatique) - [CM Introductif | SAE 303 - Dataviz](#cm-introductif-sae-303-dataviz) - [Séance 1 | Initiation à l'informatique](#s-ance-1-initiation-l-informatique) - [Séance D : Utilisation d'une base de données | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-d-utilisation-d-une-base-de-donn-es-programmation-orient-e-objet-en-php-b-u-t-) - [Enquête | BUT INFO / C# / Embarqué](#enqu-te-but-info-c-embarqu-) - [JavaScript et LocalStorage | SAE 301](#javascript-et-localstorage-sae-301) - [Séance 4 : Router et navigation | Vue.js BUT](#s-ance-4-router-et-navigation-vue-js-but) - [Séance I : Manager et BDD | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-i-manager-et-bdd-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 5 | Développement Front (S3) | MMI Nouméa](#s-ance-5-d-veloppement-front-s3-mmi-noum-a) - [Séance G : Synthèse des concepts | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-g-synth-se-des-concepts-programmation-orient-e-objet-en-php-b-u-t-) - [Séance 9 : Exercice complet | Vue.js LP](#s-ance-9-exercice-complet-vue-js-lp) - [Séance 3 | Accessibilité numérique](#s-ance-3-accessibilit-num-rique) - [Séance 8 | Développement Front (S3) | MMI Nouméa](#s-ance-8-d-veloppement-front-s3-mmi-noum-a) - [Séance 5 | Accessibilité numérique](#s-ance-5-accessibilit-num-rique) - [Exercices S3 - FC | Programmation Orientée Objet en PHP (B.U.T.)](#exercices-s3-fc-programmation-orient-e-objet-en-php-b-u-t-) - [Choix du sujet | SAE 303 - Dataviz](#choix-du-sujet-sae-303-dataviz) - [Astuces WPF | BUT INFO / C# / Embarqué](#astuces-wpf-but-info-c-embarqu-) - [Séance 7 | Développement Front (S3) | MMI Nouméa](#s-ance-7-d-veloppement-front-s3-mmi-noum-a) - [Corrections S4 | Initiation à l'informatique](#corrections-s4-initiation-l-informatique) - [Exercice datavisualisation 2 | SAE 303 - Dataviz](#exercice-datavisualisation-2-sae-303-dataviz) - [Cours magistral 2 - préparer les données | SAE 303 - Dataviz](#cours-magistral-2-pr-parer-les-donn-es-sae-303-dataviz) - [Séance 10 : TP Noté | Vue.js LP](#s-ance-10-tp-not-vue-js-lp) - [Séance 2 | Accessibilité numérique](#s-ance-2-accessibilit-num-rique) - [Introduction | Accessibilité (S1) | MMI Nouméa](#introduction-accessibilit-s1-mmi-noum-a) - [Astuces pour vos IDE | Accessibilité numérique](#astuces-pour-vos-ide-accessibilit-num-rique) - [Organisation et Livrable | SAE 303 - Dataviz](#organisation-et-livrable-sae-303-dataviz) - [DLL HomeIO | BUT INFO / C# / Embarqué](#dll-homeio-but-info-c-embarqu-) - [Corrections séance F | Programmation Orientée Objet en PHP (B.U.T.)](#corrections-s-ance-f-programmation-orient-e-objet-en-php-b-u-t-) - [Séance F : Héritage multiple | Programmation Orientée Objet en PHP (B.U.T.)](#s-ance-f-h-ritage-multiple-programmation-orient-e-objet-en-php-b-u-t-) - [Exercice datavisualisation 1 | SAE 303 - Dataviz](#exercice-datavisualisation-1-sae-303-dataviz) - [Séance 4 | Accessibilité numérique](#s-ance-4-accessibilit-num-rique) - [Mise en place d'une supervision | BUT INFO / C# / Embarqué](#mise-en-place-d-une-supervision-but-info-c-embarqu-) - [Scénarios à intégrer | BUT INFO / C# / Embarqué](#sc-narios-int-grer-but-info-c-embarqu-) - [Séance 5 : State avancé (Pinia) | Vue.js BUT](#s-ance-5-state-avanc-pinia-vue-js-but) - [Bibliographie / Sitographie | Accessibilité numérique](#bibliographie-sitographie-accessibilit-num-rique) - [Outils de navigateur | Accessibilité numérique](#outils-de-navigateur-accessibilit-num-rique) - [Séance 10 : Projet – Kick-off réseau social | Vue.js BUT](#s-ance-10-projet-kick-off-r-seau-social-vue-js-but) - [Séance 6 | Développement Front (S3) | MMI Nouméa](#s-ance-6-d-veloppement-front-s3-mmi-noum-a) - [Séance 2 - S1 - BUT MMI | Accessibilité numérique](#s-ance-2-s1-but-mmi-accessibilit-num-rique) - [Cours magistral 1 - Donner du sens aux données | SAE 303 - Dataviz](#cours-magistral-1-donner-du-sens-aux-donn-es-sae-303-dataviz) - [Analyser les données - statistiques | SAE 303 - Dataviz](#analyser-les-donn-es-statistiques-sae-303-dataviz) - [LP | Vue.js LP](#lp-vue-js-lp) - [Quelques sources | Vue.js LP](#quelques-sources-vue-js-lp) - [Séance 2 | Développement Front (S3) | MMI Nouméa](#s-ance-2-d-veloppement-front-s3-mmi-noum-a) - [Analyser les données - TCD | SAE 303 - Dataviz](#analyser-les-donn-es-tcd-sae-303-dataviz) - [Gestion des volets | BUT INFO / C# / Embarqué](#gestion-des-volets-but-info-c-embarqu-) - [Séance 4 | Développement Front (S3) | MMI Nouméa](#s-ance-4-d-veloppement-front-s3-mmi-noum-a) - [Séance 3 : Communication avec API | Vue.js BUT](#s-ance-3-communication-avec-api-vue-js-but) - [Séance 5 - 8 | LP MIOT](#s-ance-5-8-lp-miot) - [Séance 3 | Développement Front (S3) | MMI Nouméa](#s-ance-3-d-veloppement-front-s3-mmi-noum-a) - [Séance 1 : Introduction & rappel Vue | Vue.js BUT](#s-ance-1-introduction-rappel-vue-vue-js-but) - [Séance 7 : Routes | Vue.js LP](#s-ance-7-routes-vue-js-lp) - [Personnaliser TWIG | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#personnaliser-twig-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Planning | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#planning-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 1 : Eco-Système de Symfony | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#s-ance-1-eco-syst-me-de-symfony-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Webpack | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#webpack-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Premier exemple pas à pas | BUT INFO / C# / Embarqué](#premier-exemple-pas-pas-but-info-c-embarqu-) - [Travail à rendre | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#travail-rendre-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 1 : installation | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#s-ance-1-installation-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Gestion de la porte de garage | BUT INFO / C# / Embarqué](#gestion-de-la-porte-de-garage-but-info-c-embarqu-) - [FAQ | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#faq-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 1 : Architecture de Symfony | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#s-ance-1-architecture-de-symfony-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 4 : Manipuler les formulaires | Vue.js LP](#s-ance-4-manipuler-les-formulaires-vue-js-lp) - [Repository | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#repository-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 1 | Accessibilité numérique](#s-ance-1-accessibilit-num-rique) - [Services et Injection de dépendances | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV](#services-et-injection-de-d-pendances-symfony-6-lp-symfony-b-u-t-mmi-lp-dev) - [Séance 3 : Écouter des événements | Vue.js LP](#s-ance-3-couter-des-v-nements-vue-js-lp) - [Séance 0 : Docker et Installation | Symfony - B.U.T. MMI / LP DEV](#s-ance-0-docker-et-installation-symfony-b-u-t-mmi-lp-dev) - [Séance 5 : Cycle de vie et premiers pas avec les API | Vue.js LP](#s-ance-5-cycle-de-vie-et-premiers-pas-avec-les-api-vue-js-lp) - [Séance 2 : Architecture et composables | Vue.js BUT](#s-ance-2-architecture-et-composables-vue-js-but) --- # Bienvenue sur mon espace de cours | David Annebicque [hashtag](https://cours.davidannebicque.fr/david-annebicque#but-mmi-metiers-du-multimedia-et-de-linternet) BUT MMI (Métiers du Multimédia et de l'Internet) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://cours.davidannebicque.fr/david-annebicque#ressources) Ressources [](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/) POO [](https://cours.davidannebicque.fr/symfony/) Symfony [](https://cours.davidannebicque.fr/vue.js-but/) Vue.js [](https://cours.davidannebicque.fr/portfolio/semestre-3) Portfolio ### [hashtag](https://cours.davidannebicque.fr/david-annebicque#sae) SAÉ [](https://cours.davidannebicque.fr/sae-301/) SAE301 : Application web avec une UX [](https://cours.davidannebicque.fr/sae401/) SAE401 : S4 [hashtag](https://cours.davidannebicque.fr/david-annebicque#mmi-noumea) MMI Nouméa --------------------------------------------------------------------------------------- [](https://cours.davidannebicque.fr/mmi-noumea/accessibilite-s1/) S1 : Accessibilité [](https://cours.davidannebicque.fr/mmi-noumea/developpement-front-s3/) S3 : Développement Front [](https://cours.davidannebicque.fr/mmi-noumea/) S3 : Développement back [](https://cours.davidannebicque.fr/mmi-noumea/qui-suis-je/) Qui suis je ? [hashtag](https://cours.davidannebicque.fr/david-annebicque#lp-dev) LP DEV ------------------------------------------------------------------------------- [](https://cours.davidannebicque.fr/symfony/symfony-6-lp/) Symfony LP [](https://cours.davidannebicque.fr/vue.js/) Vue.js LP [hashtag](https://cours.davidannebicque.fr/david-annebicque#autres-formations) Autres formations ----------------------------------------------------------------------------------------------------- [](https://cours.davidannebicque.fr/but-info/) BUT INFO [](https://cours.davidannebicque.fr/passerelle/) Passerelle [hashtag](https://cours.davidannebicque.fr/david-annebicque#anciens-cours) Anciens cours --------------------------------------------------------------------------------------------- [](https://cours.davidannebicque.fr/lp-miot/) LP MIOT (Initiation au web) [](https://cours.davidannebicque.fr/accessibilite-numerique) Accessibilité [](https://cours.davidannebicque.fr/sae-303-dataviz) SAE 303 : Dataviz [](https://cours.davidannebicque.fr/portfolio/referentiel-de-competences) Portfolio --- # Organisation du cours | Programmation Orientée Objet en PHP (B.U.T.) Vous trouverez sur ce site tous les supports de cours pour le module de WR313a/WR313e du B.U.T. MMI de l'IUT de Troyes. Les sources nécessaires pour les différents TD et TP sont/seront disponibles dans le dépôt GitHub associé. Cette ressource est étroitement liée avec la ressource sur Symfony, et des liens seront fait entre les deux. Les exercices et séances pourront se croiser. Reportez-vous au planning global se trouvant sur ce lien. La première partie de cette ressource sera consacrée aux concepts de la Programmation Orientée Objet (POO), puis mise en pratique, notamment au travers de Symfony. L'évaluation se fera en deux parties : * Une évaluation écrite, couplée avec l'évaluation de Symfony * Une évaluation pratique avec un TP noté individuel. [SuivantFAQchevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/faq) Mis à jour il y a 4 mois --- # Présentation | Vue.js BUT circle-info Le support de cours est ici : [https://presentations.davidannebicque.fr/vuejsarrow-up-right](https://presentations.davidannebicque.fr/vuejs) [hashtag](https://cours.davidannebicque.fr/vue.js-but/#quels-sont-les-problemes-du-developpement-front-classique) Quels sont les problèmes du développement front "classique" ? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ * Chaque page web HTML est codée intégralement, et peu réutilisable pour d'autres pages (hors include en php). * Une page web est relativement figée (sans javascript), et ne permet pas une interaction "temps réel" (un champ complété alimente une zone directement). * Le manque de découpage de la page ne permet pas de réutiliser tout ou partie de la page sur une autre page [hashtag](https://cours.davidannebicque.fr/vue.js-but/#quest-ce-que-vue.js) Qu'est ce que Vue.js ? ------------------------------------------------------------------------------------------------------- > Vue.js (aussi appelé plus simplement Vue), est un [framework JavaScriptarrow-up-right](https://fr.wikipedia.org/wiki/Framework_JavaScript) > [open-sourcearrow-up-right](https://fr.wikipedia.org/wiki/Open_source) > utilisé pour construire des interfaces utilisateur et des [applications web monopagesarrow-up-right](https://fr.wikipedia.org/wiki/Application_web_monopage) > . Vue a été créé par Evan You et est maintenu par lui et le reste des membres actifs de l'équipe principale travaillant sur le projet et son écosystème. [Vue.jsvuejschevron-right](https://vuejs.org/) La documentation officielle Vue.js apporte la notion de composant (qui n'est pas nouvelle en soit, HTML intégre déjà la notion de composant), et permet un "binding" complet entre les éléments (mise à jour réciproque des éléments). Vue.js apporte une structuration forte du développement front, une réutilisabilité importante avec la notion de composant et améliore l'interactivité de l'application et l'expérience des utilisateurs. Vue.js nécessite un environnement NodeJs pour fonctionner. Le code écrit n'est pas directement exploitable par les navigateurs et implique un mécanisme de "traduction". Un automatisateur de tâche est indispensable, tel que webpack ou, ViteJs qui est recommandé avec la version 3 de Vue.js. Vue.js implique également une bonne connaissance de la syntaxe JavaScript et en particulier les versions ECMAScript 6 (ES6) et suivantes. [hashtag](https://cours.davidannebicque.fr/vue.js-but/#quelles-sont-les-alternatives-a-vue.js) Quelles sont les alternatives à Vue.js ------------------------------------------------------------------------------------------------------------------------------------------ Les "concurrents" directs de Vue.js sont : * AngularJs (dont le développeur de Vue.js est issu), précurseur sur l'approche par composant, fondé par Google. * ReactJs, développé par Facebook Lire par exemple : [Vue vs React : Lequel devriez-vous utiliser ?Kinsta®chevron-right](https://kinsta.com/fr/blog/vue-vs-react/) [React vs Vue: Which Frontend Framework to Choose in 2026?Pageprochevron-right](https://pagepro.co/blog/react-vs-vue-comparison/) [NextSéance 1 : Concepts et installationchevron-right](https://cours.davidannebicque.fr/vue.js-but/but2/seance-1-concepts-et-installation) Last updated 1 year ago --- # Introduction | SAE401 [hashtag](https://cours.davidannebicque.fr/sae401/#programme-national) Programme National ---------------------------------------------------------------------------------------------- **Objectifs :** mettre en œuvre et combiner les compétences associées à la SAE (comprendre, concevoir, développer et entreprendre) pour développer une application web intégrant un back office et une interface dynamique dans un contexte international. En tant que développeurs web juniors, les étudiants doivent concevoir et développer une application ou un service web et doivent répondre à la question : **Comment développer une application ou un service web en proposant une expérience utilisateur de qualité ?** Une **partie significative** des contenus sera réalisée en anglais. La SAÉ doit prévoir des situations permettant d’évaluer la capacité des étudiants à communiquer au sein d’organisations. [SuivantSujetchevron-right](https://cours.davidannebicque.fr/sae401/cm-lancement/sujet) Mis à jour il y a 1 an --- # Introduction | SAE 301 [hashtag](https://cours.davidannebicque.fr/sae-301/#programme-national) Programme National ----------------------------------------------------------------------------------------------- Objectifs : combiner les ressources liées au développement web, au design d’expérience et à la gestion de projet pour concevoir et développer des parcours utilisateurs. En tant que développeurs web et UX-designers, les étudiants doivent analyser le cahier des charges d'une application ou d'un site web, identifier les parcours utilisateurs, avant d'en développer les fonctionnalités en répondant à la question : Comment mettre en place un site web offrant une expérience utilisateur de qualité ? [hashtag](https://cours.davidannebicque.fr/sae-301/#presentation-resumee) Présentation résumée --------------------------------------------------------------------------------------------------- Le service culture d'une mairie d'une ville moyenne souhaite proposer un site web à ses clients avec l'offre de spectacle qu'elle propose au travers de ses différents lieux (théâtres, salles, cinéma, espace en plein air). Les objectifs de cette SAE sont : * Produire un site ergonomique avec une UX travaillée * Produire un site accessible, éco-conçu et avec un référencement travaillé [SuivantSujetchevron-right](https://cours.davidannebicque.fr/sae-301/cm-lancement/sujet) Mis à jour il y a 2 ans --- # Présentation | Symfony-6-LP | Symfony - B.U.T. MMI / LP DEV **L'ensemble de ce cours se base sur la version 6 de Symfony** circle-check Le cours des versions précédentes se trouve : [https://cours.davidannebicque.fr/symfony/v/version-4.1/arrow-up-right](https://cours.davidannebicque.fr/symfony/v/version-4.1/) ou [https://cours.davidannebicque.fr/symfony/v/version-5/arrow-up-right](https://cours.davidannebicque.fr/symfony/v/version-5/) [Introduction](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/introduction) * ["Eco-système" Symfony](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/eco-systeme) * [Première Page](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/premiere_page) * [Controller & Routes](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/controller) * [Vues (TWIG)](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/vues) * [Modèles - ORM - Entités](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/modeles) * [Relations entre entités](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/relations) * [FORM](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/form) * Securité * [Bundles](https://cours.davidannebicque.fr/symfony/symfony-6-lp/semestre-4/bundles) * TP [SuivantPlanningchevron-right](https://cours.davidannebicque.fr/symfony/symfony-6-lp/lp/planning) Mis à jour il y a 3 ans Ce contenu vous a-t-il été utile ? --- # Présentation | Symfony - B.U.T. MMI / LP DEV circle-exclamation Le cours de 2025-2026 est mené par Patrice Gommery et se trouve ici : [https://docs.mmi-troyes.fr/books/wr319d-wra319darrow-up-right](https://docs.mmi-troyes.fr/books/wr319d-wra319d) **L'ensemble de ce cours se base sur la version 6 de Symfony** circle-check Le cours des versions précédentes se trouve : [https://cours.davidannebicque.fr/symfony/v/version-4.1/arrow-up-right](https://cours.davidannebicque.fr/symfony/v/version-4.1/) ou [https://cours.davidannebicque.fr/symfony/v/version-5/arrow-up-right](https://cours.davidannebicque.fr/symfony/v/version-5/) [hashtag](https://cours.davidannebicque.fr/symfony/#objectifs-du-s3) Objectifs du S3 ----------------------------------------------------------------------------------------- * Comprendre le concept de MVC (Modèle-Vue-Contrôleur) * Comprendre le fonctionnement d'un framework * Installer et débuter avec le framework Symfony Durant ce semestre nous aurons pour fil rouge la construction d'un mini forum de discussion. Vous pouvez en voir une demonstration ici : [https://forum.davidannebicque.ovharrow-up-right](https://forum.davidannebicque.ovh/) [SuivantSéance 0 : Docker et Installationchevron-right](https://cours.davidannebicque.fr/symfony/semestre-3/seance-0) Mis à jour il y a 5 mois Ce contenu vous a-t-il été utile ? --- # Python | Initiation à l'informatique Pour fonctionner Python nécessite l'interpréteur python et un éditeur de texte (on en trouve du plus simple (notePad, Visual Code) aux plus évolués (PyCharm). Nous allons utiliser une version "portable" qui ne nécessite pas d'installation et qui intégre tout ce dont nous avons besoin. [Mettez à jour vos favorisedupython.tuxfamily.orgchevron-right](https://edupython.tuxfamily.org/#t%C3%A9l%C3%A9chargement) Choisissez la **version zip**. Décompressez et executez le programme. Vous devriez avoir la fenêtre ci-dessous  Lien vers un autre cours python avec les principales instructions. [Introduction à Python — Cours Pythoncourspython.comchevron-right](https://courspython.com/introduction-python.html) Vous disposez maintenant d'une version de python sur votre poste, permettant de tester des programmes plus complet, et de les sauvegarder. Ou un outil en ligne [Online Python - IDE, Editor, Compiler, Interpreterwww.online-python.comchevron-right](https://www.online-python.com/) [hashtag](https://cours.davidannebicque.fr/passerelle/#quelques-concepts-de-la-programmation) Quelques concepts de la programmation ---------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://cours.davidannebicque.fr/passerelle/#les-variables) Les variables Une variable est un espace de mémoire qui permet de stocker une valeur. Cette valeur peut être de différents types : entier, réel, chaîne de caractères, liste, dictionnaire, etc. En python, on ne déclare pas le type de la variable, il est déterminé automatiquement. Copier a = 5 b = "Bonjour" c = 3.14 ### [hashtag](https://cours.davidannebicque.fr/passerelle/#afficher-quelque-chose-en-python) Afficher quelque chose en python Pour afficher quelque chose en python, on utilise la fonction `print()`. Copier print("Bonjour") Afficher une variable Copier a = 5 print(a) Afficher une variable avec du texte Copier a = 5 print("La valeur de a est", a) ### [hashtag](https://cours.davidannebicque.fr/passerelle/#demander-quelque-chose-a-lutilisateur) Demander quelque chose à l'utilisateur Pour demander quelque chose à l'utilisateur, on utilise la fonction `input()`. Copier a = input("Quel est votre nom ? ") print("Bonjour", a) ### [hashtag](https://cours.davidannebicque.fr/passerelle/#les-operateurs) Les opérateurs Les opérateurs permettent de réaliser des opérations sur les variables. On distingue les opérateurs arithmétiques, les opérateurs de comparaison, les opérateurs logiques, les opérateurs d'appartenance, les opérateurs d'identité. Copier a = 5 b = 3 c = a + b d = a - b e = a * b f = a / b g = a % b h = a ** b print(c, d, e, f, g, h) Les opérateurs de comparaison permettent de comparer deux valeurs. Ils renvoient un booléen (vrai ou faux). Copier a = 5 b = 3 c = a > b d = a < b e = a == b f = a != b g = a >= b h = a <= b print(c, d, e, f, g, h) ### [hashtag](https://cours.davidannebicque.fr/passerelle/#la-syntaxe-de-python) La syntaxe de python La syntaxe de python est très simple. Les blocs de code sont délimités par l'indentation. Il n'y a pas de caractères spéciaux pour délimiter les blocs de code (comme les accolades en C, par exemple). Copier a = 5 b = 3 if a > b: print("a est plus grand que b") else: print("a est plus petit que b") [SuivantSéance 1chevron-right](https://cours.davidannebicque.fr/passerelle/seance-1) Mis à jour il y a 1 an --- # Objectifs | Accessibilité (S1) | MMI Nouméa L'objectif de ce module est de vous sensibiliser aux bonnes pratiques du web et de l'écriture du HTML afin d'améliorer l'accessibilité de vos pages Web. Nous verrons lors du CM ces notions d'accessibilité et ce que cela implique dans l'ensemble de vos productions. L'accessibilité ne se limite pas aux pages web, mais à tous les contenus que vous produirez (vidéos, images, textes, sites, ...). Le module se décompose comme suit : * Séance 1 (TD) : Concepts théorique et Tableaux * Séance 2 (TD) : Les formulaires * Séance 3 (TP) : Auditer un site pour l'accessibilité et l'éco-conception [NextIntroductionchevron-right](https://cours.davidannebicque.fr/mmi-noumea/accessibilite-s1/introduction) Last updated 2 years ago --- # Semestre 3 | Portfolio ### [hashtag](https://cours.davidannebicque.fr/portfolio/semestre-3#cm1) CM1 file-download 6MB [CM1\_S3.pptx](https://787828270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWuu4m1EQjyaVJ7qOCUU9%2Fuploads%2Fz1eLLgiqtcQ89l6OnSbV%2FCM1_S3.pptx?alt=media&token=ba3a5fee-4259-46d1-a07b-fad44ea33626) downloadTélécharger[arrow-up-right-from-squareOuvrir](https://787828270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWuu4m1EQjyaVJ7qOCUU9%2Fuploads%2Fz1eLLgiqtcQ89l6OnSbV%2FCM1_S3.pptx?alt=media&token=ba3a5fee-4259-46d1-a07b-fad44ea33626) Support du CM 1 ### [hashtag](https://cours.davidannebicque.fr/portfolio/semestre-3#td1) TD1 Questionnaire à compléter [https://forms.gle/SkUJJvCca7E2EH7v6arrow-up-right](https://forms.gle/SkUJJvCca7E2EH7v6) **Toutes les questions sont obligatoires** ### [hashtag](https://cours.davidannebicque.fr/portfolio/semestre-3#td2) TD2 Au regard de la SAE303 (Dataviz), déposez des traces (pour rappel : [https://intranet.iut-troyes.univ-reims.fr/fr/but/mmi/fiche-sae/110arrow-up-right](https://intranet.iut-troyes.univ-reims.fr/fr/but/mmi/fiche-sae/110) ). Déposez au moins 1 trace par compétence (associées à la SAE) et le texte associés. Déposez au moins deux traces hors IUT sur la/les compétences de votre choix. triangle-exclamation Dans UniFolio ([https://portfolio.iut-troyes.univ-reims.fr/arrow-up-right](https://portfolio.iut-troyes.univ-reims.fr/) ) vous devez créer un nouveau portfolio (1 par année), et le rendre public. ### [hashtag](https://cours.davidannebicque.fr/portfolio/semestre-3#td3-et-td4) **TD3 et TD4** Avec la SAE 301 terminée, compléter votre portfolio. De manière générale compléter le portfolio avec des traces faites à l'IUT (projets, SAE, ressources), et hors IUT (a minima 2 projets persos (quelques soit la/les compétences ciblées)). **Evaluation de la complétude du portfolio le 23 janvier après-midi** ### [hashtag](https://cours.davidannebicque.fr/portfolio/semestre-3#cm2) **CM2** file-download 398KB [CM2\_S3.pptx](https://787828270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWuu4m1EQjyaVJ7qOCUU9%2Fuploads%2FWT15DYuVF6Pjxfj61dxo%2FCM2_S3.pptx?alt=media&token=f97d883a-2f76-4c97-8d98-8bda51d0c52b) downloadTélécharger[arrow-up-right-from-squareOuvrir](https://787828270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWuu4m1EQjyaVJ7qOCUU9%2Fuploads%2FWT15DYuVF6Pjxfj61dxo%2FCM2_S3.pptx?alt=media&token=f97d883a-2f76-4c97-8d98-8bda51d0c52b) Support du CM2 [PrécédentSemestre 2chevron-left](https://cours.davidannebicque.fr/portfolio/semestre-2) [SuivantSemestre 4chevron-right](https://cours.davidannebicque.fr/portfolio/semestre-4) Mis à jour il y a 29 jours --- # 1. Les sessions | MMI Nouméa [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#les-sessions-en-php) Les Sessions en PHP ---------------------------------------------------------------------------------------------------- ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#rappels-sur-les-variables-super-globale-ou-variable-globale-automatique) Rappels sur les variables "super globale", ou variable globale automatique Ces variables sont automatiquement générées par le script si cela est nécessaire. Ces variables sont accessibles partout dans le code. Vous connaissez et utilisez déjà ces variables avec les formulaires : `$_POST` et `$_GET`. Ces deux variables sont des tableaux associatifs permettant, respectivement, de récupérer des données envoyées par le client en POST ou en GET. Il existe bien d'autres variables de ce type : * `$_SERVER` : ce sont des valeurs renvoyées par le serveur (IP, ...) * `$_SESSION` : on y retrouve les variables de session. Ce sont des variables qui restent stockées sur le serveur le temps de la présence d'un visiteur. * `$_COOKIE` : contient les valeurs des cookies enregistrés sur l'ordinateur du visiteur. Cela nous permet de stocker des informations sur l'ordinateur du visiteur pendant plusieurs mois, pour se souvenir de son nom par exemple * `$_FILES` : elle contient la liste des fichiers qui ont été envoyés via le formulaire précédent ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#principe) Principe Les sessions constituent un moyen de conserver des variables sur toutes les pages de votre site. Jusqu'ici, nous étions parvenus à passer des variables de page en page via la méthode GET (en modifiant l'URL : page.php?variable=valeur) et via la méthode POST (à l'aide d'un formulaire). Cette solution n'est pas très pratique et assez peu sécurisée. Comment faire, par exemple, si vous souhaitez mémoriser le fait qu'un utilisateur soit connecté/identifié ? ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#fonctionnement) Fonctionnement L'utilisation des sessions se déroule en 3 grandes étapes : * Un visiteur arrive sur votre site. On demande à créer une session pour lui. PHP génère alors un numéro unique. Ce numéro est souvent très grand et écrit en hexadécimal, par exemple : a02bbffc6198e6e0cc2715047bc3766f. * Une fois la session générée, on peut créer une infinité de variables de session pour nos besoins. Par exemple, on peut créer une variable `$_SESSION['nom']`. Le serveur conserve ces variables même lorsque la page PHP a fini d'être générée. Cela veut dire que, quelle que soit la page de votre site, les variables sont connus. * Lorsque le visiteur se déconnecte de votre site, la session est fermée et PHP "oublie" alors toutes les variables de session que vous avez créées. Le numéro de session généré, qui sert d'identifiant et est appelé "ID de session" (ou PHPSESSID). PHP transmet automatiquement cet ID de page en page en utilisant généralement un cookie stocké sur l'ordinateur du visiteur. Il est en fait diffcile de savoir précisément quand un visiteur quitte votre site. En effet, lorsqu'il ferme son navigateur ou va sur un autre site, le vôtre n'en est pas informé. Soit le visiteur clique sur un bouton "Déconnexion" (que vous aurez créé) avant de s'en aller, soit on attend quelques minutes d'inactivité pour le déconnecter automatiquement : on parle alors de timeout. Le plus souvent, le visiteur est déconnecté par un timeout. ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#definition) Définition Une session est donc un moyen de stocker des informations (variables) sur le serveur, à la différence des cookies qui sont stockés sur le poste client. Les sessions permettent de conserver des informations d'une page à l'autre. Les sessions sont uniques pour chaque utilisateur, et ne sont accessibles que par le site qui les a créées. Un cookie est généralement créé pour stocker l'identifiant unique de la session. Un des grands intérêts des sessions est qu’on va pouvoir conserver des informations pour un utilisateur lorsqu’il navigue d’une page à une autre. De plus, les informations de session ne vont cette fois-ci pas être stockées sur les ordinateurs de vos visiteurs à la différence des cookies mais plutôt côté serveur ce qui fait que les sessions vont pouvoir être beaucoup plus sûres que les cookies. La durée de vie d'une session dépend de la configuration du serveur. Par défaut, elle est de 24 minutes. Il est possible de la modifier dans le fichier de configuration php.ini. ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#creation-dune-session) Création d'une session Pour créer une session, il faut utiliser la fonction `session_start()` qui va créer un fichier de session sur le serveur. Ce fichier contient les informations de la session. Il est identifié par un identifiant unique qui est stocké dans un cookie (souvent nommé PHPSESSID). Ce cookie est envoyé au navigateur du client. Le client envoie ce cookie à chaque requête HTTP. Le serveur peut ainsi retrouver le fichier de session correspondant à l'identifiant contenu dans le cookie. Il va falloir appeler `session_start()` dans chaque page où on souhaite pouvoir accéder aux variables de session. circle-exclamation **Attention au piège** ! Il faut appeler session\_start() sur chacune de vos pages **AVANT** d'écrire le moindre code HTML (avant même la balise ). Si vous oubliez de lancer session\_start(), vous ne pourrez pas accéder aux variables superglobales $\_SESSION. ### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#utilisation-des-variables-de-session) Utilisation des variables de session Une fois la session démarrée, on peut utiliser les variables de session comme des variables normales. Elles sont stockées dans le tableau `$_SESSION`. #### [hashtag](https://cours.davidannebicque.fr/mmi-noumea/#exemple) Exemple Ci-dessous un exemple complet d'utilisation de session. Première page (on pourrait imaginer un formulaire de connexion qui récupère les données.) Copy ...
Salut !
Tu es sur l'accueil de mon site (index.php ). Tu veux aller sur une autre page ?
Re - bonjour !
Je me souviens de toi ! Tu t'appelles !
Et tu as ans.
Now you see me
--- # Séance 6 : Routes et API | Vue.js BUT Sur cette séance nous allons réexploiter les éléments vus précédement pour mettre en place un lien sur chaque pays pour arriver sur une fiche détaillée. [hashtag](https://cours.davidannebicque.fr/vue.js-but/but2/seance-6-routes-et-api#objectifs) Objectifs ----------------------------------------------------------------------------------------------------------- * Créer une route qui prend en paramètre un pays * Ajouter un lien sur chaque pays * Modifier la vue FIchePays.vue pour afficher les informations du pays en fonction du paramètre passé dans l'URL * Mettre un minimum en forme les données du pays (image du drapeau), nom du pays, langues parlées, monnaie, capitale, superficie, etc. Résultat attendu [PreviousSéance 4-5 : Composants et APIchevron-left](https://cours.davidannebicque.fr/vue.js-but/but2/seance-4-5-composants-et-api) [NextSéance 7 : Evénements et Formulaireschevron-right](https://cours.davidannebicque.fr/vue.js-but/but2/seance-7-evenements-et-formulaires) Last updated 1 year ago --- # FAQ | Programmation Orientée Objet en PHP (B.U.T.) circle-info Cette partie évoluera en fonction de vos questions récurrentes, et des problèmes rencontrés [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/faq#utiliser-limage-docker-mmi) Utiliser l'image Docker MMI ----------------------------------------------------------------------------------------------------------------------------------------------- Patrice Gommery a créé une image Docker avec Apache2, Mariadb, PHP8.1 pour les MMI. Il faut installer docker sur votre système et démarré Docker. Ensuite : 1. Créer un dossier www pour la persistance des données (c'est à dire qu'elles ne soient pas effacées dès que vous arrêté docker). Vous pouvez créer le dossier ou vous voulez (mais évitez le bureau !) 2. Dans ce dossier www, créez un sous-dossier html et dans celui-ci une page index.php avec le contenu (au final on doit avoir : `???/www/html/index.php`) **Ces deux étapes ne sont à faire que la première fois que l'on crée le container.** Le dossier /var/www/html contiendra ensuite toutes les pages et l'arborescence que vous voulez exploiter en cours. Les fichiers ne seront pas effacés lors de l'arrêt du container. 1. On crée le container : (Exemple sous Windows, seul le chemin du dossier sera différent sur un mac ou sous linux) `docker run -dti --name lampbut1 -v C:\Users\VotreUser\BUT1\www:/var/www -v datalampbut1:/var/lib/mysql -p 8080:80 mmi3docker/lampbut1` Quelques explications : * Docker run crée le container (et le démarre) * \-dti (pour que le container soit exécuter en arrière-plan et accessible par un terminal interactif, et aussi pour qu'il ne s'arrête pas tout seul) * \--name lampbut1 (lampbut1 sera le nom du container, vous pouvez l'appeler comme vous voulez) * \-v C:\\Users\\VotreUser\\BUT1\\www :/var/www ( Création d'un volume pour la persistance des données après l'arrêt du container . * C:\\Users\\VotreUser\\BUT1\\www est votre dossier local, donc à adapter selon votre configuration * /var/www est le dossier du container dans lequel apache (et d'autres services stockent les données). Pour être plus précis apache stocke par défaut dans /var/www/html, mais j'ai laissé /var/www pour pouvoir créer d'autres dossiers en hébergement, donc ne changer pas, laissez /var/www) * \-v datalampbut1:/var/lib/mysql (Création d'un volume persistant pour les données de mysql. là pas besoin de chemin en local, Docker va créer lui-même le volume en local et le nommera datalampbut1. Vous pouvez le nommer autrement si vous voulez , mais ne changer pas /var/lib/mysql ça c'est le dossier de stockage des bases sur le container) * \-p 8080:80 (Redirection du port 80 du container sur le port 8080 en local, vous pouvez bien sur mettre autre chose que 8080 si vous voulez) * mmi3docker/lampbut1 est le nom du depot Docker sur lequel j'ai stocké l'image (et qui sera donc recopier sur votre poste lors de la première création d container) 1. Comme tous les services sont dans le même container (ce qui n'est pas forcément une bonne pratique, mais pour commencer en S1 c'est très bien et plus facile), il faut lancer les services manuellement sur le container. Rien de compliqué, saisissez simplement la commande : docker exec lampbut1 /root/bootmmi.sh (ou lampbut1 est le nom que vous avez donné au container) Voilà c'est tout. Votre container est créé et lancé. Pour vérifier, ouvrez un navigateur avec l'URL : localhost:8080 (ou le port que vous avez mis au démarrage) Si vous avez fait correctement les étapes 1 et 2, vous devriez afficher la configuration de php 8.1 active sur le serveur web. Si vous voulez créer d'autres pages et les tester, créez-les dans votre dossier www/html c'est aussi simple que ça. Pour voir si la base de données fonctionne : localhost:8080/adminer (le login est adminer, le mot de passe : 123456) Si vous voulez manipulez les bases en lignes de commande : docker exec -ti lampbut1 mysql Si vous voulez accéder au shell: docker exec -ti lampbut1 /bin/bash (Attention si vous créez des dossiers et fichiers ailleurs que dans /var/www, rien ne sera conservé à l'arrêt du container, idem si vous installez de nouveaux paquets) Pour arrêter le container : docker stop lampbut1 Pour le relancer docker start lampbut1 (Si vous avez créé des pages ou une base de données, vous pouvez constater que tout est encore là) [PrécédentOrganisation du courschevron-left](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php) [SuivantSéance A : Introduction à la POOchevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-1) Mis à jour il y a 3 ans --- # Séance A : Introduction à la POO | Programmation Orientée Objet en PHP (B.U.T.) CM1 [Programmation Orientée Objetpresentations.davidannebicque.frchevron-right](https://presentations.davidannebicque.fr/r313.html) Support de cours [PrécédentFAQchevron-left](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/faq) [SuivantSéance B : Concepts de la POOchevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2) Mis à jour il y a 4 mois --- # Séance E : Héritage & Encapsulation | Programmation Orientée Objet en PHP (B.U.T.) [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#cours) Cours -------------------------------------------------------------------------------------------------------------------- Nous avons vu dans la séance 3, le principe de l’encapsulation et dans la séance 4 le principe de l’héritage. Voyons maintenant comment combiner les deux. Principe : L’encapsulation consiste à déclarer **PRIVATE** les propriétés de la classe. Cela reste vrai qu’il y ait héritage au non. Mais dans le cas de l’héritage, les propriétés déclarées **PRIVATE** ne sont accessibles que dans la classe déclarant ces propriétés. Une classe Fille ne peut accéder aux propriétés héritées que si elles ont été déclarées en **PROTECTED**. Donc dans le cas de l'héritage on choisira de déclarer les propriétés en **PROTECTED** pour faciliter la manipulation des propriétés par les classes filles. [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#pour-resumer-la-visibilite-des-proprietes) Pour résumer la visibilité des propriétés -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Les visibilités suivantes existent en PHP et peuvent s'appliquer aux propriétés et aux méthodes. * **public** pourra être appelé partout, on évitera d'utiliser cette solution sur les propriétés * **private** ne pourra être appelé que dans la classe. * **protected** ne pourra être appelé que dans la classe et les classes qui en hérite. [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#exercice) Exercice -------------------------------------------------------------------------------------------------------------------------- La classe **Vehicule** possède les propriétés suivantes : * marque * puissance * kilometrage Les méthodes sont * Le constructeur * La méthode `parcourir($distance)` qui cumule les kilomètres parcourus par le véhicule * La méthode `lire_caracteristiques()` qui retourne les valeurs des propriétés du véhicule. **Nous avons déjà écrit cette classe dans la** [**séance 2**arrow-up-right](https://app.gitbook.com/s/-LjKrFSyq65TEN9dTgPU/seance2/sujet.md) **. Vous pouvez/devez la reprendre et modifier la visibilité des propriétés** La classe Voiture hérite de Vehicule. * Elle possède en plus la propriété privée type qui permet de distinguer les berlines, des SUV, des 4x4 et des breaks (‘berline’,’suv’,’4x4’,’break’). Attention, seules ces valeurs sont possibles. Tout autre valeur est invalide et affichera une erreur. * La méthode `lire_type()` permet de connaître le type de véhicule. ### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#a-faire) A FAIRE * Créez les deux classes dans un fichier nommé vehicule.php * Créez une application td5.php : * Une instance de Vehicule. Exemple de votre choix * Deux instances de Voiture, Exemples à votre convenance. * Testez votre application en utilisant les différentes méthodes des différentes instances. * Que se passe-t-il lorsque l'on appelle la méthode lire\_caractéristique() sur une Voiture ? Modifiez votre code pour que lire\_caractéristique() puisse afficher toutes les informations de la voiture. * Créez une nouvelle classe, Bus, qui héritera de Véhicule et qui contiendra comme propriétés le nombre de place assise et le nombre d'essieux (les axes portant les roues). [PrécédentCorrections séance Dchevron-left](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/corrections-seance-d) [SuivantSéance F : Héritage multiplechevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-6) Mis à jour il y a 1 an * [Cours](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#cours) * [Pour résumer la visibilité des propriétés](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#pour-resumer-la-visibilite-des-proprietes) * [Exercice](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#exercice) * [A FAIRE](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-5#a-faire) --- # Séance B : Concepts de la POO | Programmation Orientée Objet en PHP (B.U.T.) [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#objectifs) Objectifs ---------------------------------------------------------------------------------------------------------------------------- * Mettre en œuvre les concepts de propriété et de méthode. * Mettre en œuvre les concepts de classe et d’objet * Construire une application PHP Orienté Objet circle-info Pour les TD et TP de POO nous allons travailler en local pour gagner en efficacité et éviter de devoir uploader le code sur un serveur pour tester. Le plus simple est d'utiliser l'image docker que vous avez créé en WR314 : https://docs.mmi-troyes.fr/books/wr314-2025/page/seance01-container-buts3. Vous pouvez aussi utiliser une version logiciel tel que _WampServer_ ou _Xamp_ pour Windows, ou _MAMP_ pour MacOs, si vous rencontrez des difficultés avec Docker. [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#enonce-et-travail-a-faire) Enoncé et travail à faire ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#exercice-1) Exercice 1 #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#les-proprietes) **Les propriétés** Un Véhicule est un **OBJET** du monde réel. La classe se caractérise par : * Sa marque (du texte) * Sa puissance en CV (un nombre entier) * Son kilométrage (un nombre décimal) #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#les-methodes) **Les méthodes** Utiliser un véhicule a pour effet d’augmenter la valeur du kilométrage. On souhaite pouvoir afficher les caractéristiques du véhicule #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#programmation) **Programmation** * Le code de la classe _Vehicule_ (avec une majuscule) doit être enregistré dans le fichier V**ehicule.php** * Le code de l’application doit être enregistré dans le fichier **tp1\_vehicule.php**. * Utilisez la commande _require_ pour appeler la classe _Vehicule_ dans l’application. * Ecrire la classe pour définir les propriétés et les méthodes de l’objet _Vehicule_ * Ecrire une application : * qui instanciera les deux véhicules suivants Nom du véhicule marque puissance kilometrage vehicule1 RENAULT 90 15000 vehicule2 PEUGEOT 110 20000 * qui affiche les caractéristiques des deux véhicules * qui modifie la puissance de la vehicule1 : nouvelle valeur 110 * qui affiche le kilométrage des véhicules après un déplacement : le vehicule1 parcoure 3500 km et la vehicule2 parcoure 1500 km. ### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#exercice-2) Exercice 2 Considérant qu'un chien est caractérisé par sa race, son âge et son poids, définissez une classe permettant de le représenter. Un chien est par ailleurs un animal qui vieillit, et qui peut prendre du poids. On peut afficher toutes les caractéristiques des chiens. 1. Définir la classe Chien 2. Créer le fichier tp1\_chien.php pour tester la classe. 3. Créer les deux chiens suivants : Nom du chien Race Age Poids Chien1 Labrador 4 25 Chien2 Berger Allemand 6 20 Ecrire le code permettant de réaliser les étapes suivantes : * Afficher les données des chien1 et chien2 * Le chien1 prend un an de plus (c'est son anniversaire :)) * Le chien2 mange et grossit de 1,5Kg * Le chien1 perd 2kg * A chaque étape afficher les informations du chien. [PrécédentSéance A : Introduction à la POOchevron-left](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-1) [SuivantSéance C : Encapsulationchevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3) Mis à jour il y a 5 mois * [Objectifs](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#objectifs) * [Enoncé et travail à faire](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#enonce-et-travail-a-faire) * [Exercice 1](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#exercice-1) * [Exercice 2](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2#exercice-2) --- # Séance C : Encapsulation | Programmation Orientée Objet en PHP (B.U.T.) #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3#rappels-de-cours) Rappels de Cours L’encapsulation consiste à déclarer les propriétés (attributs) en **private** (ou protected) au lieu de public. **Pourquoi ?** Pour l’intégrité des données, c’est-à-dire pour que les propriétés ne prennent pas n’importe quelles valeurs. Le programmeur d’une classe va ainsi construire un code fiable. Le programmeur utilisant de cette classe n’aura pas à se préoccuper de l’intégrité du code qu’il utilise. L’unique façon d’assurer d’y arriver est donc de rendre inaccessible les attributs sauf en créant des méthodes publiques qui permettront de s’assurer que les valeurs prises restes dans celles admises. Ces méthodes filtrent donc l’usage des attributs. On appelle une méthode publique qui permet d'accéder à une propriété un _getter_ (car commence en général par getXxxx) ou un _accesseur_, et on nomme une méthode publique qui permet de définir ou de modifier une propriété un _setter_ (car commence en général par setXxxx) ou un _mutateur_. Remarque : il est possible de déclarer des méthodes privées (qui ne seront utilisée que dans la classe elle même). Cela permet de renforcer la stabilité du code et ces évolutions. #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3#objectifs-de-la-seance) Objectifs de la séance * Comprendre le concept d’encapsulation. * Mettre en œuvre l’encapsulation #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3#exercice-n-1) EXERCICE N°1 Voici le code la classe Personne. personne.php Copier nom=$n; $this->prenom=$p; $this->age=$a; } // Définition du comportement sePresente() public function sePresente(): string { return 'Je m\'appelle '.$this->prenom.' '.$this->nom.' et j\'ai '.$this->age.' ans '; } } ?> Les propriétés sont déclarées **private**. Voici le code de l’application seance3\_exo1.php. A FAIRE * Créez les deux fichiers personne.php et seance3\_exo1.php. * Testez seance3\_exo1.php et répondez aux questions * Pourquoi l’exécution du code de seance3\_exo1.php renvoie une erreur ? * Donnez une solution simple pour permettre l’exécution normale de ce code #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3#exercice-2) EXERCICE 2 Nous allons ici modifier le code de la classe Personne pour répondre à un nouveau cahier des charges. Le nom d’une personne sera obligatoirement en majuscules. Le programmeur qui utilisera cette classe pourra créer une instance sans se soucier de cette contrainte. C’est donc à la classe de gérer conversion du nom en majuscules. Voici comment. Code de la classe Personne2 Voici le code de l’application seance3\_exo2.php A FAIRE * Créez une nouvelle version du code de la classe (Personne2) et de l’application (seance3\_exo2) * Testez seance3\_exo2.php #### [hashtag](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-3#exercice-n-3) Exercice N°3 Nous allons écrire la classe connexion\_sql qui permet de gérer la connexion à des bases de données MYSQL. Chaque fois que nous aurons besoin de gérer une connexion à une base de données, il suffira de créer une instance de cette classe. L’exercice proposé se limitera à quelques propriétés et quelques méthodes. La classe ne sera donc pas opérationnelle. Mais sa programmation devra nous permettre d’assimiler le concept d’encapsulation. **Ecrire la classe ConnexionSQL :** Les propriétés * adresseip : adresse IP du serveur * nombase : nom de la base de données * utilisateur : nom de l’utilisateur * mdp : mot de passe Les méthodes * constructeur * lire\_connexion qui retourne adresseip, nombase et utilisateur. **Ecrire l’application seance3\_exo3.php** * Testez le code **Questions complémentaires** * modifier la classe Connexion\_SQL pour vous assurer que l'IP donnée par l'utilisateur est dans un format valide. Sinon, afficher un message d'erreur. [PrécédentSéance B : Concepts de la POOchevron-left](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-2) [SuivantSéance D : Héritagechevron-right](https://cours.davidannebicque.fr/programmation-orientee-objet-en-php/decouverte/seance-4) Mis à jour il y a 3 ans seance3\_exo1.php Copier sePresente().'Message is: {{ message }}
Copy const message = ref('Hello Vue!') `v-model` peut être utilisé sur des `` de différents types, des éléments `