SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Cours PHP/MySQL
4éme partie
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
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
Projet: Listing des produits
4
Projet: Listing de produits par
catégorie
5
Projet: Ajout de produits au panier
6
Projet: Retirer des produits depuis le
panier
7
Les concepts fondamentaux de la
programmation orientée objet
8
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
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
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
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
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
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
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
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
La programmation orientée objet en
PHP
17
Les exceptions
18
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
• 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'erreur
echo $e->getMessage();
?>
Générer une exception
• 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ée
car une exception est lancée pour interrompre
l'exécution normale du programme */
echo 'Bonjour !';
?>
Lancer une exception à travers le programme
• PHP dispose d'une structure conditionnelle capable
d'intercepter les exceptions afin de permettre
d'appliquer des traitements particuliers.
<?php
try {
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
Les fichiers
23
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
<?php
$file = fopen('compteur.txt', 'r+');
fclose($file);
?>
Ouvrir et fermer un fichier
<?php
$file = fopen('compteur.txt', 'r+');
$ligne = fgets($file);
fclose($file);
?>
Lire un fichier
<?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
Projet: Utilisation des concepts
orientés objet
28

Contenu connexe

Tendances

Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql courszan
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POOmazenovi
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEMarouan OMEZZINE
 

Tendances (18)

Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql cours
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Introduction au Jquery
Introduction au JqueryIntroduction au Jquery
Introduction au Jquery
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POO
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (1ere partie) élaborée par Marouan OMEZZINE
 

En vedette

Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
CReVote: un système de vote électronique résistant à la coercition basé sur l...
CReVote: un système de vote électronique résistant à la coercition basé sur l...CReVote: un système de vote électronique résistant à la coercition basé sur l...
CReVote: un système de vote électronique résistant à la coercition basé sur l...pacomeambassa
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOATugdual Grall
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logicielNassim Bahri
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CNassim Bahri
 
LESS, Le CSS avancé
LESS, Le CSS avancéLESS, Le CSS avancé
LESS, Le CSS avancéMahmoud Nbet
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualitéNassim Bahri
 
Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databasesNassim Bahri
 
Overview of c++ language
Overview of c++ language   Overview of c++ language
Overview of c++ language samt7
 
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Gantner Technologies
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3JDerrien
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...Cyber Security Alliance
 

En vedette (20)

Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
CReVote: un système de vote électronique résistant à la coercition basé sur l...
CReVote: un système de vote électronique résistant à la coercition basé sur l...CReVote: un système de vote électronique résistant à la coercition basé sur l...
CReVote: un système de vote électronique résistant à la coercition basé sur l...
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOA
 
Gidsy.com
Gidsy.comGidsy.com
Gidsy.com
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2C
 
LESS, Le CSS avancé
LESS, Le CSS avancéLESS, Le CSS avancé
LESS, Le CSS avancé
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualité
 
Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databases
 
1 Introduction
1 Introduction1 Introduction
1 Introduction
 
Methodes agile
Methodes agileMethodes agile
Methodes agile
 
Overview of c++ language
Overview of c++ language   Overview of c++ language
Overview of c++ language
 
Conférence big data
Conférence big dataConférence big data
Conférence big data
 
Modèle en cascade
Modèle en cascadeModèle en cascade
Modèle en cascade
 
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 

Similaire à Cours php & Mysql - 4éme partie

Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011yassine kchiri
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfLarbaSAWADOGO2
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptEddySHANGA
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdfandre543581
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof frIt Academy
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfSliimAmiri
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015Tarik Zakaria Benmerar
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...Tarik Zakaria Benmerar
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalDuchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalagnes_crepet
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygenEmmanuelle Morlock
 

Similaire à Cours php & Mysql - 4éme partie (20)

Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011Cours java smi_2011_2012_partie_i_29_octobre_2011
Cours java smi_2011_2012_partie_i_29_octobre_2011
 
4711538.pptx
4711538.pptx4711538.pptx
4711538.pptx
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdf
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
OOP and Design Patterns
OOP and Design PatternsOOP and Design Patterns
OOP and Design Patterns
 
OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015OOP & Design Pattern - Algiers Developers Meetup August 2015
OOP & Design Pattern - Algiers Developers Meetup August 2015
 
Design patterns
Design patternsDesign patterns
Design patterns
 
POO-Cours.pdf
POO-Cours.pdfPOO-Cours.pdf
POO-Cours.pdf
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
 
CPOO.pdf
CPOO.pdfCPOO.pdf
CPOO.pdf
 

Cours php & Mysql - 4éme partie

  • 2. 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
  • 3. 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
  • 4. Projet: Listing des produits 4
  • 5. Projet: Listing de produits par catégorie 5
  • 6. Projet: Ajout de produits au panier 6
  • 7. Projet: Retirer des produits depuis le panier 7
  • 8. Les concepts fondamentaux de la programmation orientée objet 8
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. La programmation orientée objet en PHP 17
  • 19. 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
  • 20. • 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'erreur echo $e->getMessage(); ?> Générer une exception
  • 21. • 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ée car une exception est lancée pour interrompre l'exécution normale du programme */ echo 'Bonjour !'; ?> Lancer une exception à travers le programme
  • 22. • PHP dispose d'une structure conditionnelle capable d'intercepter les exceptions afin de permettre d'appliquer des traitements particuliers. <?php try { 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
  • 24. 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
  • 25. <?php $file = fopen('compteur.txt', 'r+'); fclose($file); ?> Ouvrir et fermer un fichier
  • 26. <?php $file = fopen('compteur.txt', 'r+'); $ligne = fgets($file); fclose($file); ?> Lire un fichier
  • 27. <?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
  • 28. Projet: Utilisation des concepts orientés objet 28