Download - Cours php & Mysql - 4éme partie
![Page 1: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/1.jpg)
Cours PHP/MySQL4éme partie
![Page 2: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/2.jpg)
Séance précédente
• Projet: La création de la page d’accueil du site• Projet: La création des autres pages statiques• Les formulaires• Sessions et cookies• L'envoi de mail• Introduction aux bases de données et au MySQL en particulier
• Introduction au langage SQL• Modélisation Merise d'une base de données (Exemple de notre projet de site e-commerce)
• Communiquer entre PHP et MySQL• Projet: Authentification au site• Projet: Affichage des catégories de produits
![Page 3: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/3.jpg)
Séance d'aujourd'hui
• Projet: Listing des produits• Projet: Listing de produits par catégorie• Projet: Ajout de produits au panier• Projet: Retirer des produits depuis le panier• Les concepts fondamentaux de la programmation orientée objet
• La programmation orientée objet en PHP• Les exceptions• Les fichiers• Projet: Utilisation des concepts orientés objet
![Page 4: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/4.jpg)
Projet: Listing des produits
4
![Page 5: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/5.jpg)
Projet: Listing de produits par
catégorie
5
![Page 6: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/6.jpg)
Projet: Ajout de produits au panier
6
![Page 7: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/7.jpg)
Projet: Retirer des produits depuis le
panier
7
![Page 8: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/8.jpg)
Les concepts fondamentaux de la
programmation orientée objet
8
![Page 9: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/9.jpg)
La programmation fonctionnelle
• Les programmes sont composés d'une série de fonctions, qui ensemble, assurent certains services.
• Son avantage principal est la factorisation des comportements.
• Son défaut principal est la complexité de maintenance du code dus au chaînage des fonctions à cause de la factorisation des comportements.
9
![Page 10: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/10.jpg)
La programmation orienté objet
• Les programmes sont composés de classes représentant des entités du monde physique (voiture, livre,…etc)
• Ses avantages: facilité d'organisation, réutilisation, facilité de correction, facilite la conception car elle décrit les entités comme dans le monde réel.
10
![Page 11: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/11.jpg)
OPP: Qu’est ce qu’une classe ?
• Une classe, est un type de données abstrait, caractérisé par des propriétés (ses attributs et ses méthodes) communes à des objets et elle permet de créer des objets possédant ces propriétés.
11
![Page 12: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/12.jpg)
OPP: Qu’est ce qu’un objet ?
• Un objet est une entité comportant des frontières précises et qui possède une identité (un nom).
• De plus, un ensemble d'attributs caractérisent l'état d'un objet, et l'on dispose d'un ensemble d'opérations (les méthodes) qui permettent d'agir sur le comportement de l'objet.
• Un objet est l'instance d'une classe
12
![Page 13: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/13.jpg)
OPP: L'encapsulation
• L'encapsulation consiste à masquer les détails d'implémentation d'un objet.
• L'encapsulation facilite l'évolution d'une application car elle stabilise l'évolution des objets.
• Elle garantit de plus l'intégrité des données vu qu'elle permet d'interdire l'accès direct aux attributs des objets (on doit alors passer par des assesseurs).
• Un assesseur étant une méthode d'accès pour connaître ou modifier la valeur d'un attribut d'un objet.
13
![Page 14: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/14.jpg)
OPP: L'héritage
• L'héritage est un mécanisme de transmission des propriétés d'une classe (ses attributs et ses méthodes) vers une sous-classe (la sous-classe héritant de la classe principale).
• Grâce à l'héritage, une classe peut aussi être spécialisée en d'autres classes, afin d'y ajouter des caractéristiques spécifiques (ajout de méthodes par exemple) ou d'en adapter certaines.
• Plusieurs classes peuvent aussi être généralisées en une classe qui les factorise, et ce, afin de regrouper les caractéristiques communes d'un ensemble de classes.
• La spécialisation et la généralisation permettent de construire des hiérarchies de classes.
• L'avantage principal de l'héritage est qu'il vous permet de d'éviter la duplication de code, et il encourage à la réutilisation de même code.
14
![Page 15: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/15.jpg)
OPP: Le polymorphisme
• Le polymorphisme représente la faculté d'une méthode à pouvoir s'appliquer à des objets de classes différentes. Il augmente donc la généricité du code.
15
![Page 16: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/16.jpg)
OPP: L'agrégation
• L'agrégation constitue une relation entre deux classes, spécifiant que les objets d'une classe sont des composants de l'autre classe.
• Une relation d'agrégation permet donc de définir des objets composés d'autres objets.
• L'agrégation permet d'assembler des objets de base, afin de construire des objets plus complexes.
16
![Page 17: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/17.jpg)
La programmation orientée objet en
PHP
17
![Page 18: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/18.jpg)
Les exceptions
18
![Page 19: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/19.jpg)
Les exceptions
• Le mécanisme des exceptions a été introduit à PHP dans sa version 5 en complément de son nouveau modèle orienté objet.
• Les exceptions permettent de simplifier, personnaliser et d'organiser la gestion des erreurs dans un programme.
• Le mot « erreurs » ne signifie pas « bug », qui est un comportement anormal de l'application développée, mais plutôt un cas exceptionnel à traiter différemment dans le déroulement du programme.
19
![Page 20: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/20.jpg)
• La création d'une exception est réalisée par l'appel au constructeur de la classe native Exception
<?php
// Création de l'objet Exception$e = new Exception("Une erreur s'est produite");
// Affiche le message d'erreurecho $e->getMessage();
?>
Générer une exception
![Page 21: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/21.jpg)
• Le lancement d'une exception à travers le programme est réalisée grâce au mot-clé « throw »
<?php
if (isset($_GET['id']) && ! (int)$_GET['id']) {throw new Exception('Le paramètre id doit être un entier !');
}
/* Cette ligne ne sera jamais exécutéecar une exception est lancée pour interromprel'exécution normale du programme */
echo 'Bonjour !';
?>
Lancer une exception à travers le programme
![Page 22: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/22.jpg)
• PHP dispose d'une structure conditionnelle capable d'intercepter les exceptions afin de permettre d'appliquer des traitements particuliers.
<?phptry {if (isset($_GET['id']) && ! (int)$_GET['id']) {throw new Exception('Le paramètre id doit être un entier !');}
echo 'Bonjour !';}catch(Exception $e){echo "L'erreur suivante a été générée: <br>";echo $e->getMessage();} ?>
Intercepter / attraper une exception générée
![Page 23: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/23.jpg)
Les fichiers
23
![Page 24: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/24.jpg)
Les droits sur les fichiers
• r: Ouvre le fichier en lecture seule.
• r+: Ouvre le fichier en lecture et écriture.
• a: Ouvre le fichier en écriture seule et si le fichier n'existe pas, il est automatiquement créé.
• a+: Ouvre le fichier en lecture et écriture. Si le fichier n'existe pas, il est créé automatiquement.
24
![Page 25: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/25.jpg)
<?php
$file = fopen('compteur.txt', 'r+');
fclose($file);
?>
Ouvrir et fermer un fichier
![Page 26: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/26.jpg)
<?php
$file = fopen('compteur.txt', 'r+');
$ligne = fgets($file);
fclose($file);
?>
Lire un fichier
![Page 27: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/27.jpg)
<?php
$file = fopen('compteur.txt', 'r+');
$pagesVues = fgets($file);$pagesVues++;fseek($file, 0);fputs($file, $pagesVues);
fclose($file);
echo '<p>Cette page a été vue ' . $pagesVues . ' fois !</p>';
?>
Ecrire dans un fichier
![Page 28: Cours php & Mysql - 4éme partie](https://reader033.vdocuments.pub/reader033/viewer/2022052218/55870129d8b42acf538b470f/html5/thumbnails/28.jpg)
Projet: Utilisation des concepts
orientés objet
28