Upload
agace-pineau
View
116
Download
6
Embed Size (px)
Citation preview
03:24:5103:24:51 Programmation Web 2011-2012Programmation Web 2011-2012 11
PHP objetPHP objet
Jérôme CUTRONAJérôme CUTRONA
[email protected]@univ-reims.fr
Développement objetDéveloppement objet
Définition de Définition de briques logiciellesbriques logicielles représentant un représentant un concept, une idée ou une entité ainsi que leurs concept, une idée ou une entité ainsi que leurs interactions : les objetsinteractions : les objets
Un objet est une Un objet est une structure de donnéesstructure de données comprenant également les comprenant également les fonctionnalitésfonctionnalités de de traitement des donnéestraitement des données
L’objet est vu au travers de ses L’objet est vu au travers de ses spécificationsspécifications Les concepts associés sont :Les concepts associés sont :
EncapsulationEncapsulation HéritageHéritage PolymorphismePolymorphisme
2203:24:5103:24:51 Programmation Web 2011-2012Programmation Web 2011-2012
ClasseClasse
Une Une classe définit un modèleclasse définit un modèle, un moule, à partir , un moule, à partir duquel tous les objets de classe seront créésduquel tous les objets de classe seront créés
La classe décrit les La classe décrit les données internesdonnées internes ainsi que ainsi que les les fonctionnalités fonctionnalités des objetsdes objets
La La classe est une vision « inerte »classe est une vision « inerte », une recette , une recette de cuisine, visant à décrire la structure et le de cuisine, visant à décrire la structure et le comportement des objets qui seront crééscomportement des objets qui seront créés
La La construction d’un objetconstruction d’un objet à partir de la classe à partir de la classe génératrice s’appelle génératrice s’appelle instanciationinstanciation
Les Les objetsobjets, entités « vivantes » en mémoire,, entités « vivantes » en mémoire, sont des instancessont des instances de la classe de la classe
3303:24:5103:24:51 Programmation Web 2011-2012Programmation Web 2011-2012
InstanciationInstanciation
La classe est une description « inerte »La classe est une description « inerte »
Les objets doivent être instanciés à partir de la Les objets doivent être instanciés à partir de la classe génératrice pour exister et devenir classe génératrice pour exister et devenir fonctionnelsfonctionnels
Exemple : la classe AnimalExemple : la classe Animal$bambi = new Animal() ;$bambi = new Animal() ;$scrat = new Animal() ;$scrat = new Animal() ;$melman = new Animal() ;$melman = new Animal() ;
4403:24:5103:24:51 Programmation Web 2011-2012Programmation Web 2011-2012
EncapsulationEncapsulation
Procédé consistant à Procédé consistant à rassembler les données et rassembler les données et les traitements au sein des objetsles traitements au sein des objets
L’L’implémentation interneimplémentation interne des objets est des objets est cachéecachée Les objets sont vu à travers leurs Les objets sont vu à travers leurs spécificationsspécifications Les données internes et les fonctionnalités Les données internes et les fonctionnalités
possèdent un possèdent un niveau de visibiliténiveau de visibilité et peuvent et peuvent éventuellement être masquées :éventuellement être masquées : Public Public PrivéPrivé ProtégéProtégé
5503:24:5103:24:51 Programmation Web 2011-2012Programmation Web 2011-2012
EncapsulationEncapsulation
Les Les données internesdonnées internes des objets sont appelées des objets sont appelées attributsattributs
Les Les fonctionnalitésfonctionnalités des objets sont appelées des objets sont appelées méthodesméthodes
Méthodes habituelles :Méthodes habituelles : ConstructeurConstructeur / / destructeurdestructeur AccesseursAccesseurs / / modificateursmodificateurs (getters / setters) (getters / setters)
Référence à l’objet courant dans la description Référence à l’objet courant dans la description de la classe : de la classe : $this$this
6603:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
VisibilitéVisibilité
PubliquePublique : :Les données internes et les méthodes sont Les données internes et les méthodes sont accessibles par tousaccessibles par tous
ProtégéProtégé : :Les données internes et les méthodes sont Les données internes et les méthodes sont accessibles aux objets dérivésaccessibles aux objets dérivés
PrivéPrivé : :Les données internes et les méthodes ne sont Les données internes et les méthodes ne sont accessibles qu’aux objets de la classeaccessibles qu’aux objets de la classe
7703:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Héritage ou dérivation ou extensionHéritage ou dérivation ou extension
Création de Création de nouvellesnouvelles classesclasses àà partirpartir du modèle du modèle d’uned’une classeclasse existanteexistante
La nouvelle classe possède La nouvelle classe possède toustous lesles attributsattributs etet méthodes de la classe mèreméthodes de la classe mère
La nouvelle classe peut proposer de La nouvelle classe peut proposer de nouveauxnouveaux attributsattributs et de et de nouvellesnouvelles méthodesméthodes ou ou spécialiserspécialiser desdes méthodesméthodes de la classe mère de la classe mère
8803:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Im pa la C a rib ou
H e rb ivo re
G u ép a rd L éo pa rd
C a rn ivo re
M a m m ifè re
PolymorphismePolymorphisme
Choix dynamique de la méthode qui correspond Choix dynamique de la méthode qui correspond au type réel de l’objetau type réel de l’objet
Méthode mange()Méthode mange()
function nourriture(Mammifere $m) {function nourriture(Mammifere $m) {return $m->mange() ;return $m->mange() ;
}} $i = new Impala() ; nourriture($i) ;$i = new Impala() ; nourriture($i) ; $c = new Carnivore() ; nourriture($c) ;$c = new Carnivore() ; nourriture($c) ;
9903:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Im pa lah erbe
C a rib oum o usse
H e rb ivo rep la n tes
G u ép a rdim p a la
L éo pa rdim p a la
C a rn ivo rev ian de
M a m m ifè ren o u rritu re
herbeherbe
viandeviande
101003:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Développement objet en PHPDéveloppement objet en PHP
PHP 4PHP 4 Classes (tout est public)Classes (tout est public) ConstructeurConstructeur HéritageHéritage Méthodes statiques implicitesMéthodes statiques implicites Outils pour la linéarisation (sauvegarde sur disque)Outils pour la linéarisation (sauvegarde sur disque)
PHP 5PHP 5 Classes (choix public, protected, private)Classes (choix public, protected, private) Constructeur et destructeurConstructeur et destructeur Membres et méthodes statiquesMembres et méthodes statiques Classes et méthodes abstraitesClasses et méthodes abstraites ……
111103:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Définition d'une classe en PHP 4Définition d'une classe en PHP 4
<?php<?php
classclass MaClasse MaClasse {{
varvar $$madonneemadonnee ; ; // Attribut// Attribut
// Constructeur// Constructeur
functionfunction MaClasse MaClasse(($$paramparam)) {{
$$thisthis->->madonnee madonnee == $$paramparam ; ;
}}
functionfunction affiche affiche()() { { // Méthode// Méthode
echoecho get_classget_class(($$thisthis))
.."" contient contient "".$.$thisthis->->madonnee ;madonnee ;
}}
}}
?>?>
Attribut publicAttribut public
Déclaration de classeDéclaration de classe
Constructeur publicConstructeur public
Accès à un attributAccès à un attribut
Méthode publiqueMéthode publique
Donne le nom de la Donne le nom de la classe de l'objet classe de l'objet
courantcourant
Référence à Référence à l'objet courantl'objet courant
121203:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Utilisation d'une classe en PHP 4Utilisation d'une classe en PHP 4
<?php<?php
requirerequire " "maclasse.phpmaclasse.php" ;" ;
// Nouvel objet// Nouvel objet
$$oo == newnew MaClasse MaClasse((1212)) ; ;
// Utilisation d'une méthode// Utilisation d'une méthode
$$oo->->afficheaffiche()() ; ;
$$oo->->madonnee madonnee == " "coucoucoucou" ;" ;
?>?>
Inclusion de la Inclusion de la définition de la classedéfinition de la classe
Création d'un objetCréation d'un objet
Méthode affiche de Méthode affiche de
l'objet l'objet $$oo
Impossible de Impossible de restreindre l'accès restreindre l'accès
aux attributsaux attributs
maclasse contient 12maclasse contient 12
131303:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
<?php<?php
classclass MaClasseHeritee MaClasseHeritee extendsextends MaClasse MaClasse {{
varvar $$autredonneeautredonnee ; ;
functionfunction MaClasseHeritee MaClasseHeritee(($$param1param1, , $$param2param2)) {{
parentparent::::MaClasseMaClasse(($$param1param1)) ; ;
$$thisthis->->autredonnee autredonnee == $$param2param2 ; ;
}}
functionfunction affiche affiche()() {{
MaClasseMaClasse::::afficheaffiche()() ; ;
echoecho " " et et ""..get_classget_class(($$thisthis))
.."" contient contient "".$.$thisthis->->autredonnee ;autredonnee ;
}}
}}
?>?>
Héritage en PHP 4Héritage en PHP 4
Héritage deHéritage deMaClasseMaClasse
Opérateur de Opérateur de résolution de portéerésolution de portée
(Paamayim (Paamayim Nekudotayim) Nekudotayim)
Méthode MaClasse Méthode MaClasse du parentdu parent
Méthode affiche de Méthode affiche de la classe la classe
MaClasseMaClasse
141403:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Méthodes de classe implicitesMéthodes de classe implicites
<?php<?php
classclass MaClasse MaClasse {{
varvar $$madonneemadonnee ; ; // Attribut// Attribut
// Constructeur// Constructeur
functionfunction MaClasse MaClasse(($$paramparam)) {{
$$thisthis->->madonnee madonnee == $$paramparam ; ;
}}
functionfunction affiche affiche()() { { // Méthode// Méthode
echoecho $$thisthis->->madonnee ;madonnee ;
}}
functionfunction statique statique()() {{ // Méthode// Méthode
echoecho " "Statique !!!Statique !!!" " ;;
}}
}} ?>?>
Méthode publiqueMéthode publique
Ne fait pas référence àNe fait pas référence à$$thisthis
Méthode statiqueMéthode statique(méthode de classe)(méthode de classe)
151503:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Méthodes de classe implicitesMéthodes de classe implicites
<?php<?php
requirerequire " "maclasse.phpmaclasse.php" ;" ;
// Création d'un objet// Création d'un objet
$$oo == newnew MaClasse MaClasse((1212)) ;;
// Utilisation d'une méthode// Utilisation d'une méthode
$$oo->->afficheaffiche()() ;;
// Utilisation d'une méthode implicitement statique// Utilisation d'une méthode implicitement statique
MaClasseMaClasse::::statiquestatique()() ;;
?>?>
Inclusion de la Inclusion de la définition de la classedéfinition de la classe
Création d'un objetCréation d'un objet
Méthode affiche de Méthode affiche de
l'objet l'objet $$oo
Impossible de Impossible de restreindre l'accès restreindre l'accès
aux attributsaux attributs
1212
Statique !!!Statique !!!
161603:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Développement objet en PHP 5Développement objet en PHP 5
A partir de maintenant, A partir de maintenant, développement en développement en PHP 5PHP 5
171703:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Définition d'une classeDéfinition d'une classe
<?php<?php
classclass MaClasse MaClasse {{
privateprivate $$madonneemadonnee ; ;
publicpublic functionfunction __construct __construct(($$paramparam)) {{
$$thisthis->->madonnee madonnee == $$paramparam ; ;
}}
functionfunction __destruct __destruct()() {{
echoecho ""Destruction...Destruction..." ; " ; }}
functionfunction affiche affiche()() {{
echoecho ""madonnee : madonnee : ""
.$.$thisthis->->madonnee ;madonnee ;
}}
} ?>} ?>
Attribut privéAttribut privé
Déclaration de classeDéclaration de classe
Constructeur publicConstructeur public
Référence à l'objet Référence à l'objet courantcourant
Méthode publique Méthode publique par défautpar défaut
Accès à un attributAccès à un attribut
Destructeur publicDestructeur public
181803:24:5203:24:52 Programmation Web 2011-2012Programmation Web 2011-2012
Utilisation d'une classeUtilisation d'une classe
<?php<?php
requirerequire " "maclasse.phpmaclasse.php" ;" ;
// Nouvel objet// Nouvel objet
$$oo == newnew MaClasse MaClasse((1212)) ; ;
// Utilisation d'une méthode// Utilisation d'une méthode
$$oo->->afficheaffiche()() ; ;
$$oo->->madonnee madonnee == " "coucoucoucou" ;" ;
unsetunset(($$oo)) ; ;
?>?>
Inclusion de la Inclusion de la définition de la classedéfinition de la classe
Création d'un objetCréation d'un objet
Méthode affiche de Méthode affiche de
l'objet l'objet $$oo
L'attribut est privéL'attribut est privé
maclasse contient 12maclasse contient 12
Fatal errorFatal error: Cannot access private : Cannot access private property MaClasse::$madonnee in property MaClasse::$madonnee in dummy.phpdummy.php on line on line 2525
classclass MaClasse MaClasse {{privateprivate $$madonneemadonnee ; ;
......
Destruction de Destruction de
l'objet l'objet $$ooDestruction...Destruction...functionfunction __destruct __destruct()() {{
echo echo ""Destruction...Destruction..." ; " ; }}
191903:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Valeur par défaut des attributsValeur par défaut des attributs
<?php<?php
classclass MaClasse MaClasse {{
privateprivate $$madonnee madonnee == " "DéfautDéfaut" ;" ;
functionfunction affecte affecte(($$valval)) {{
$$thisthis->->madonnee madonnee = $= $valval ; ; }}
functionfunction affiche affiche()() {{
echoecho ""madonnee : madonnee : "".$.$thisthis->->madonnee ; madonnee ; }}
}}
$$oo == newnew MaClasse MaClasse()() ; ;
$$oo->->afficheaffiche()() ; ;
$$oo->->affecteaffecte((""NouvelleNouvelle"")) ; ;
$$oo->->afficheaffiche()() ; ;
?>?>
Attribut avec valeur Attribut avec valeur par défautpar défaut
Nouvel objetNouvel objet
AffichageAffichage
AffectationAffectation
AffichageAffichage
madonnee : Défautmadonnee : Défaut
madonnee : Nouvellemadonnee : Nouvelle
202003:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Attributs et méthodes de classeAttributs et méthodes de classe
Mot clé Mot clé staticstatic Attributs et méthodes utilisables Attributs et méthodes utilisables sans instance sans instance
de la classe de la classe (=attributs et méthode de classe)(=attributs et méthode de classe) Attributs Attributs NENE peuvent peuvent PASPAS être accédés depuis être accédés depuis
une instance (une instance ($$objetobjet->->attributattribut)) Attributs partagés par toutes les instances de la Attributs partagés par toutes les instances de la
classeclasse Méthodes peuvent être accédés depuis une Méthodes peuvent être accédés depuis une
instance (instance ($$objetobjet->->methodemethode()())) Dans les méthodes, Dans les méthodes, $$thisthis n'est pas disponible n'est pas disponible
212103:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Attributs statiquesAttributs statiques
classclass MaClasse MaClasse {{
privateprivate staticstatic $$nn == 00 ; ;
functionfunction __construct __construct()() {{
echoecho ++++MaClasseMaClasse::$::$nn
.."" instance(s) instance(s)" ; " ; }}
functionfunction __destruct __destruct()() {{
echoecho " "destructiondestruction" ; " ; selfself::$::$nn---- ; ; }}
}}
$$ss == newnew MaClasse MaClasse()() ; ;
$$tt == newnew MaClasse MaClasse()() ; ;
unsetunset(($$tt)) ; ;
$$uu == newnew MaClasse MaClasse()() ; ;
$$vv == newnew MaClasse MaClasse()() ; ;
echoecho MaClasse MaClasse::$::$nn ; ;
Attribut privé statique :Attribut privé statique :ne peut être accédé ne peut être accédé
que par des méthodes que par des méthodes de la classede la classe
Accès à l'attribut Accès à l'attribut statiquestatique
1 instance(s)1 instance(s)
2 instance(s)2 instance(s)
destructiondestruction
2 instance(s)2 instance(s)
3 instance(s)3 instance(s)Fatal errorFatal error: Cannot access private property : Cannot access private property MaClasse::$n in MaClasse::$n in dummy.phpdummy.php on line on line 3737
222203:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Méthodes statiquesMéthodes statiques
classclass MaClasse MaClasse {{
privateprivate staticstatic $$nn == 00 ; ;
functionfunction __construct __construct()() {{
echoecho ++++MaClasseMaClasse::$::$nn.."" instance(s)<br> instance(s)<br>\n\n" ; " ; }}
functionfunction __destruct __destruct()() {{
MaClasseMaClasse::$::$nn---- ; ; }}
staticstatic functionfunction f f(($$ii) {) {
echoecho " "Dans f() : Dans f() : ""..(($$ii*$*$ii)) ; ; }}
}}
$$ss == newnew MaClasse MaClasse()() ; ;
$$ss->->ff((22)) ; ;
MaClasseMaClasse::::ff((33)) ; ;
Méthode publique Méthode publique statiquestatique
Appel à partir d'une instanceAppel à partir d'une instanceToléréToléré
Appel sans instanceAppel sans instance
1 instance(s)1 instance(s)
Dans f() : 4Dans f() : 4
Dans f() : 9Dans f() : 9
232303:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Constantes de classeConstantes de classe
classclass MaClasse MaClasse {{
constconst constante constante == " "ValeurValeur" ;" ;
publicpublic functionfunction montre montre()() {{
echoecho selfself::::constante ;constante ;
}}
}}
$$cc == newnew MaClasse MaClasse()() ; ;
$$cc->->montremontre()() ; ;
echoecho MaClasse MaClasse::::constante ; constante ;
Constante publique de Constante publique de classeclasse
Accès à la constante Accès à la constante de classe depuis la de classe depuis la
classeclasse
Accès à la constante Accès à la constante de classe à l'extérieur de classe à l'extérieur
de la classede la classe
ValeurValeur
ValeurValeur
242403:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
HéritageHéritage
classclass Simple Simple {{
functionfunction affiche affiche()() {{
echoecho " "Je suisJe suis SimpleSimple" ; " ; }}
}}
classclass Etendue Etendue extendsextends Simple Simple {{
functionfunction affiche affiche()() {{
parentparent::::afficheaffiche()() ; ;
echoecho " " mais aussi Etendue mais aussi Etendue" ;" ;
}}
}}
$$ss == newnew Simple Simple()() ; ;
$$ee == newnew Etendue Etendue()() ; ;
$$ss->->afficheaffiche()() ; ;
$$ee->->afficheaffiche()() ; ;
Classe simpleClasse simple
Une méthode Une méthode publiquepublique
Classe étendue Classe étendue héritant de la classe héritant de la classe
simplesimple
Surcharge de la Surcharge de la méthodeméthode
Appel de la méthode Appel de la méthode du parentdu parent
Je suis Simple mais aussi EtendueJe suis Simple mais aussi Etendue
Je suis SimpleJe suis Simple
252503:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Assignation d'objetsAssignation d'objets
classclass Point Point {{
privateprivate $$_x_x ; ;
privateprivate $$_y_y ; ;
publicpublic functionfunction __construct __construct(($$xx==00, , $$yy==00)) {{
$$thisthis->->_x _x == $$xx ; ;
$$thisthis->->_y _y == $$yy ; ; }}
publicpublic functionfunction set set(($$xx, , $$yy)) {{
$$thisthis->->_x _x == $$xx ; ;
$$thisthis->->_y _y == $$yy ; ; }}
publicpublic functionfunction toString toString()() {{
returnreturn " "(({{$$thisthis->->_x_x}}, , {{$$thisthis->->_y_y}}))" ; " ; }}
}}
262603:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Assignation d'objetsAssignation d'objets
$$segmentsegment == arrayarray()() ; ;
$$pointpoint == newnew Point Point()() ; ;
forfor (($$ii==1010; ; $$ii<<2020; ; $$ii++++))
{{
$$pointpoint->->setset(($$ii, , $$ii)) ; ;
$$segmentsegment[][] == $$pointpoint ; ;
}}
foreachforeach (($$segmentsegment asas $$kk =>=> $$pp))
echoecho " "$$kk: : {{$$pp->->toString()toString()}}<br><br>\n\n" ; " ;
0: (19, 19)0: (19, 19)1: (19, 19)1: (19, 19)2: (19, 19)2: (19, 19)3: (19, 19)3: (19, 19)4: (19, 19)4: (19, 19)5: (19, 19)5: (19, 19)6: (19, 19)6: (19, 19)7: (19, 19)7: (19, 19)8: (19, 19)8: (19, 19)9: (19, 19)9: (19, 19)
$$pointpoint
00,,00
$$segmentsegment
00112233445566778899
1010,,10101111,,11111212,,12121313,,13131414,,14141515,,15151616,,16161717,,17171818,,18181919,,1919
272703:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
$$segmentsegment == arrayarray()() ; ;
$$pointpoint == newnew Point Point()() ; ;
forfor (($$ii==1010; ; $$ii<<2020; ; $$ii++++))
{{
$$pointpoint->->setset(($$ii, , $$ii)) ; ;
$$segmentsegment[][] == cloneclone $$pointpoint ; ;
}}
foreachforeach (($$segmentsegment asas $$kk =>=> $$pp))
echoecho " "$$kk: : {{$$pp->->toString()toString()}}<br><br>\n\n" ; " ;
0: (10, 10)0: (10, 10)1: (11, 11)1: (11, 11)2: (12, 12)2: (12, 12)3: (13, 13)3: (13, 13)4: (14, 14)4: (14, 14)5: (15, 15)5: (15, 15)6: (16, 16)6: (16, 16)7: (17, 17)7: (17, 17)8: (18, 18)8: (18, 18)9: (19, 19)9: (19, 19)
Clonage d'objetsClonage d'objets
$$pointpoint
00,,00
$$segmentsegment
00112233445566778899
1010,,1010
1111,,1111
1212,,1212
1313,,1313
1414,,1414
1515,,1515
1616,,1616
1717,,1717
1818,,1818
1919,,1919
1010,,10101111,,11111212,,12121313,,13131414,,14141515,,15151616,,16161717,,17171818,,18181919,,1919
282803:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Objets comme arguments de fonctionsObjets comme arguments de fonctions
functionfunction origine origine(($$pp) {) {
$$pp->->setset((00, , 00)) ; ; }}
$$pointpoint == newnew Point Point((1010, , 1010)) ; ;
echoecho " "avant: avant: {{$$pointpoint->->toString()toString()}}<br><br>\n\n" ;" ;
origineorigine(($$pointpoint)) ; ;
echoecho " "apres: apres: {{$$pointpoint->->toString()toString()}}<br><br>\n\n" ; " ;
avant: (10, 10)avant: (10, 10)apres: (0, 0)apres: (0, 0)
Passage de l'objet Passage de l'objet PointPoint par référencepar référence
292903:24:5303:24:53 Programmation Web 2011-2012Programmation Web 2011-2012
Objets dans les chaînes de caractèresObjets dans les chaînes de caractères
Problème :Problème : ambiguïtéambiguïté non évaluablenon évaluable
Chaîne contenant :Chaîne contenant : un attribut d'un objet dans une chaîneun attribut d'un objet dans une chaîne"a : "a : $a->attribut$a->attribut""
le résultat d'une méthode d'un objet dans une chaînele résultat d'une méthode d'un objet dans une chaîne"résultat : "résultat : $a->calcule()$a->calcule()""
une entrée de tableau associatifune entrée de tableau associatif "valeur : "valeur : $tab['cle']$tab['cle']"" une variable suivie de texte (sans espace)une variable suivie de texte (sans espace)"\$a contient "\$a contient $a$aeuros"euros"
303003:24:5403:24:54 Programmation Web 2011-2012Programmation Web 2011-2012
Objets dans les chaînes de caractèresObjets dans les chaînes de caractères
Solution :Solution : effectuer des concaténations (pénible)effectuer des concaténations (pénible) délimiter par délimiter par {{ }}
Chaîne contenant :Chaîne contenant : un attribut d'un objet dans une chaîneun attribut d'un objet dans une chaîne"a : "a : {{$a->attribut$a->attribut}}""
le résultat d'une méthode d'un objet dans une chaînele résultat d'une méthode d'un objet dans une chaîne"résultat : "résultat : {{$a->calcule()$a->calcule()}}""
une entrée de tableau associatifune entrée de tableau associatif "valeur : "valeur : {{$tab['cle']$tab['cle']}}"" une variable suivie de texte (sans espace)une variable suivie de texte (sans espace)"\$a contient "\$a contient {{$a$a}}euros"euros"
313103:24:5403:24:54 Programmation Web 2011-2012Programmation Web 2011-2012
Gestion des erreurs : exceptionsGestion des erreurs : exceptions
Gestion des exception identiques à C++/JavaGestion des exception identiques à C++/Java Exception peut être :Exception peut être :
JetéeJetée : : throwthrow EssayéeEssayée : : trytry CapturéeCapturée : : catchcatch
Exception jetée : code après Exception jetée : code après throwthrow non exécuté non exécuté Capture : 1 ou plusieurs blocs (selon type)Capture : 1 ou plusieurs blocs (selon type) Exception non capturée : erreur fataleException non capturée : erreur fatale
323203:24:5403:24:54 Programmation Web 2011-2012Programmation Web 2011-2012
trytry {{
$$errorerror == ' 'Toujours lancer cette erreurToujours lancer cette erreur';';
throwthrow newnew Exception Exception(($$errorerror));;
/* Le code après une exception n'est/* Le code après une exception n'est
jamais exécuté. */jamais exécuté. */
echoecho ' 'Jamais exécutéJamais exécuté'; '; }}
catchcatch ((Exception Exception $$ee)) {{
echoecho ""Capture Exception: Capture Exception: ""
.$.$ee->->getMessage()getMessage().."" \n\n"; "; }}
// Poursuite de l'exécution// Poursuite de l'exécution
echoecho ' 'Bonjour le mondeBonjour le monde';';
DéroutementDéroutement
Utilisation des exceptionsUtilisation des exceptions
EssayerEssayerLancerLancerCapturerCapturer
Capture Exception: Toujours lancer cette erreurCapture Exception: Toujours lancer cette erreur
Bonjour le mondeBonjour le monde
333303:24:5403:24:54 Programmation Web 2011-2012Programmation Web 2011-2012
Classe Classe ExceptionException PHP 5 PHP 5
<?php<?php
classclass Exception Exception {{
protectedprotected $$messagemessage == ''; ''; // message de l'exception// message de l'exception
protectedprotected $$codecode == 00; ; // code de l'exception// code de l'exception
protectedprotected $$filefile; ; // fichier source de l'exception// fichier source de l'exception
protectedprotected $$lineline; ; // ligne de la source de l'exception// ligne de la source de l'exception
functionfunction __construct __construct((stringstring $$messagemessage==NULLNULL, , intint code code==00));;
finalfinal functionfunction getMessage getMessage()(); ; // message de l'exception// message de l'exception
finalfinal functionfunction getCode getCode()(); ; // code de l'exception// code de l'exception
finalfinal functionfunction getFile getFile()(); ; // nom du fichier source// nom du fichier source
finalfinal functionfunction getLine getLine()(); ; // ligne du fichier source// ligne du fichier source
finalfinal functionfunction getTrace getTrace()(); ; // un tableau de backtrace()// un tableau de backtrace()
finalfinal functionfunction getTraceAsString getTraceAsString()(); ; // chaîne de trace// chaîne de trace
functionfunction _toString _toString()(); ; // chaîne pour l'affichage// chaîne pour l'affichage
} ?>} ?>