0% ont trouvé ce document utile (0 vote)
132 vues19 pages

Introduction à la POO en PHP 5

Transféré par

Karim Atlassi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
132 vues19 pages

Introduction à la POO en PHP 5

Transféré par

Karim Atlassi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PHP

Bertrand Estellon
Aix-Marseille Universit e

13 mars 2012

Bertrand Estellon (AMU)

PHP

13 mars 2012

1 / 214

Programmation Oriente Objet e

Introduction

Programmation Oriente Objet e


La programmation oriente objet de PHP 5 est similaire ` celle de Java. e a Nous allons voir comment : Dnir une classe e Crer une instance e Accder aux proprits et invoquer des mthodes e ee e Modier laccessibilit aux proprits et aux mthodes e ee e Dnir un constructeur et un destructeur e Dnir des interfaces, des classes abstraites e Utiliser lhritage e Cloner des instances

Bertrand Estellon (AMU)

PHP

13 mars 2012

122 / 214

Programmation Oriente Objet e

Classe et instance

Dnition dune classe e


Pour dnir une classe, on utilise le mot-cl class. e e <? class uneClasse {

p u b l i c $p1 ; p u b l i c $p2 = 1 2 ; p u b l i c $p3 = a r r a y ( t o t o , 1 2 ) ; // p u b l i c $p4 = s t r l e n ( t o t o ) ; interdit ! public ... } } ?>


Bertrand Estellon (AMU) PHP 13 mars 2012 123 / 214

f u n c t i o n maMethode ( $ a r g 1 , $ a r g 2 ) {

Programmation Oriente Objet e

Classe et instance

Cration dune instance e


Pour crer une instance dune classe, on utilise le mot-cl new. e e <? class uneClasse {

p u b l i c $p1 ; p u b l i c $p2 = 1 2 ; p u b l i c $p3 = a r r a y ( t o t o , 1 2 ) ; // p u b l i c $p4 = s t r l e n ( t o t o ) ; interdit ! public } $ i 1 = new m a C l a s s e ( ) ; $ i 2 = new m a C l a s s e ( ) ; ?>


Bertrand Estellon (AMU) PHP 13 mars 2012 124 / 214

f u n c t i o n maMethode ( $ a r g 1 , $ a r g 2 ) { . . . }

Programmation Oriente Objet e

Classe et instance

Acc`s aux proprits et invocation de mthodes e ee e


<? c l a s s UneClasse { p u b l i c $p ; p u b l i c f u n c t i o n maMethode ( $ a r g ) { . . . } } $ i = new U n e C l a s s e ( ) ; $i >p = 1 2 ; pas de $ dans le nom de la proprit e e e c h o $ i >p ; $ i >p = a r r a y ( 1 , 2 ) ; e c h o $ i >p [ 1 ] ; idem avec les tableaux $ i >maMethode ( t o t o ) ; avec la -> comme en C++ ?>
Bertrand Estellon (AMU) PHP 13 mars 2012 125 / 214

Programmation Oriente Objet e

Classe et instance

$this
<? c l a s s maClasse { p u b l i c $p = 0 ; p u b l i c f u n c t i o n maMethode ( ) { $ t h i s >p+=1; e c h o $ t h i s >p . \n ; } p u b l i c f u n c t i o n maMethodeBis ( ) { $ t h i s >maMethode ( ) ; } } $ i = new m a C l a s s e ( ) ; $i >maMethode ( ) ; ache 1 $ i >maMethode ( ) ; ache 2 $ i >maMethodeBis ( ) ; ache 3 ?>
Bertrand Estellon (AMU) PHP 13 mars 2012 126 / 214

Programmation Oriente Objet e

Classe et instance

Constantes proprits et mthodes statiques ee e


<? c l a s s maClasse { c o n s t c =2; p u b l i c s t a t i c $s = 4 ; p u b l i c s t a t i c f u n c t i o n maMethode ( ) { s e l f : : $ s+=s e l f : : c ; e c h o s e l f : : $ s . \n ; } } $ i 1 = new m a C l a s s e ( ) ; $ i 2 = new m a C l a s s e ( ) ; $i1 >maMethode ( ) ; ache 6 m a C l a s s e : : maMethode ( ) ; ache 8 $ i 2 >maMethode ( ) ; ache 10 e c h o m a C l a s s e : : $ s . . m a C l a s s e : : c ; ache 10 2 ?>
Bertrand Estellon (AMU) PHP 13 mars 2012 127 / 214

Programmation Oriente Objet e

Classe et instance

Constructeur et destructeur
c l a s s maClasse { p r i v a t e $nom ; function } function } } $ i 1 = new m a C l a s s e ( moi ) ; $ i 2 = new m a C l a s s e ( t o i ) ; $ i 1 = n u l l ; achage de moi est mort. achage de toi est mort
Bertrand Estellon (AMU) PHP 13 mars 2012 128 / 214

c o n s t r u c t ( $nom ) { $ t h i s >nom = $nom ;

destruct () { e c h o $ t h i s >nom . e s t mort . \ n ;

Programmation Oriente Objet e

Hritage et interface e

Interface
i n t e r f a c e monInterface1 { p u b l i c f u n c t i o n methode1 ( ) ; p u b l i c f u n c t i o n methode2 ( $ a r g ) ; } i n t e r f a c e monInterface2 { p u b l i c f u n c t i o n methode3 ( ) ; }

c l a s s maClasse implements monInterface1 , monInterface2 { p u b l i c f u n c t i o n methode1 ( ) { . . . } p u b l i c f u n c t i o n methode2 ( $ a r g ) { . . . } p u b l i c f u n c t i o n methode3 ( ) { . . . } }


Bertrand Estellon (AMU) PHP 13 mars 2012 129 / 214

Programmation Oriente Objet e

Hritage et interface e

Hritage e
c l a s s maClasse { p u b l i c $n ; c o n s t r u c t ( $n ) { $ t h i s >n = $n ; } function f u n c t i o n a f f i c h e r ( ) { e c h o $ t h i s >n . \n ; } } class maClasseHeritee extends maClasse { p u b l i c $v ; function c o n s t r u c t ( $n , $v =2) { parent : : c o n s t r u c t ( $n ) ; $ t h i s >v = $v ;

} function } }
Bertrand Estellon (AMU) PHP 13 mars 2012 130 / 214

a f f i c h e r () { e c h o $ t h i s >n . . $ t h i s >v . \n ;

Programmation Oriente Objet e

Hritage et interface e

Hritage e

$ i 1 = new m a C l a s s e ( i n s t a n c e 1 ) ; $ i 2 = new m a C l a s s e H e r i t e e ( i n s t a n c e 2 , 1 2 ) ; $ i 1 > a f f i c h e r ( ) ; ache instance1 $ i 2 > a f f i c h e r ( ) ; ache instance2 12 var var var var dump ( $ i 1 dump ( $ i 2 dump ( $ i 1 dump ( $ i 2 instanceof instanceof instanceof instanceof m a C l a s s e ) ; bool(true) m a C l a s s e ) ; bool(true) m a C l a s s e H e r i t e e ) ; bool(false) m a C l a s s e H e r i t e e ) ; bool(true)

v a r d u m p ( $1 ) ;

Bertrand Estellon (AMU)

PHP

13 mars 2012

131 / 214

Programmation Oriente Objet e

Hritage et interface e

Late Static Bindings (Rsolution statique ` la vole) e a e


c l a s s maClasse { function af fich er 1 () { s e l f : : af fiche r2 ( ) ; } s t a t i c function a ff ich er 2 () { e c h o m a C l a s s e \n ; } } c l a s s maClasseHeritee extends maClasse { s t a t i c function a ff ich er 2 () { e c h o m a C l a s s e H e r i t e e \n ; } } $ i 1 = new m a C l a s s e ( ) ; $ i 2 = new m a C l a s s e H e r i t e e ( ) ; $ i 1 > a f f i c h e r 1 ( ) ; maClasse $ i 2 > a f f i c h e r 1 ( ) ; maClasse
Bertrand Estellon (AMU) PHP 13 mars 2012 132 / 214

Programmation Oriente Objet e

Hritage et interface e

Late Static Bindings (Rsolution statique ` la vole) e a e


c l a s s maClasse { function af fich er 1 () { s t a t i c : : a ff ich er 2 ( ) ; } s t a t i c function a ff ich er 2 () { e c h o m a C l a s s e \n ; } } c l a s s maClasseHeritee extends maClasse { s t a t i c function a ff ich er 2 () { e c h o m a C l a s s e H e r i t e e \n ; } } $ i 1 = new m a C l a s s e ( ) ; $ i 2 = new m a C l a s s e H e r i t e e ( ) ; $ i 1 > a f f i c h e r 1 ( ) ; maClasse $ i 2 > a f f i c h e r 1 ( ) ; maClasseHeritee
Bertrand Estellon (AMU) PHP 13 mars 2012 133 / 214

Programmation Oriente Objet e

Hritage et interface e

Classe abstraite
abstract class maClasseAbstraite { a b s t r a c t p u b l i c f u n c t i o n getName ( ) ; public } } c l a s s maClasse extends m a C l a s s e A b s t r a i t e { p u b l i c f u n c t i o n getName ( ) { r e t u r n moi ; } } $ i = new m a C l a s s e ( ) ; $ i >a f f i c h e r N o m ( ) ; ache moi function afficherNom () { e c h o $ t h i s >getName ( ) . \n ;

Bertrand Estellon (AMU)

PHP

13 mars 2012

134 / 214

Programmation Oriente Objet e

Hritage et interface e

Visibilit e
public : utilisable par nimporte quelle partie du programme. protected : utilisable uniquement par les classes et parents hrits. e e private : utilisable uniquement par la classe qui les a dnis. e
c l a s s maClasse { p u b l i c $pub ; p ro t ect e d $pro ; private $pri ; p u b l i c f u n c t i o n methodePublique () { . . . } p r o t e c t e d f u n c t i o n methodeProtegee ( ) { . . . } p r i v a t e f u n c t i o n methodePrivee () { . . . } } class maClasseHeritee extends maClasse { public function test () { echo $ t h i s >pub ; $ t h i s >m e t h o d e P u b l i q u e ( ) ; echo $ t h i s ro ; $ t h i s >p >m e t h o d e P r o t e g e e ( ) ; echo $ t h i s >p r i ; $ t h i s >m e t h o d e P r i v e e ( ) ; interdit ! } }
Bertrand Estellon (AMU) PHP 13 mars 2012 135 / 214

Programmation Oriente Objet e

Hritage et interface e

Visibilit e
public : utilisable par nimporte quelle partie du programme. protected : utilisable uniquement par les classes et parents hrits. e e private : utilisable uniquement par la classe qui les a dnis. e
c l a s s maClasse { p u b l i c $pub ; p ro t ect e d $pro ; private $pri ; p u b l i c f u n c t i o n methodePublique () { . . . } p r o t e c t e d f u n c t i o n methodeProtegee ( ) { . . . } p r i v a t e f u n c t i o n methodePrivee () { . . . } } c l a s s m a C l a s s e 2 // qui ntend pas maClasse { e public function test () { $ i = new m a C l a s s e ( ) ; echo $i >pub ; $ i >m e t h o d e P u b l i q u e ( ) ; echo $i ro ; $i >p >m e t h o d e P r o t e g e e ( ) ; interdit ! echo $i >p r i ; $ i >m e t h o d e P r i v e e ( ) ; interdit ! } }
Bertrand Estellon (AMU) PHP 13 mars 2012 136 / 214

Programmation Oriente Objet e

Clonage

Clonage
<? c l a s s maClasse { p u b l i c $nom ; function } function } } $ i = new m a C l a s s e ( moi ) ; $c = c l o n e $ i ; echo $i >nom . \n ; e c h o $c >nom . \n ; ?> ache moi ache Clone de moi clone () { $this >nom = C l o n e de . $ t h i s >nom ; c o n s t r u c t ( $nom ) { $this >nom = $nom ;

Bertrand Estellon (AMU)

PHP

13 mars 2012

137 / 214

Programmation Oriente Objet e

Mthodes magiques e

Mthodes magiques Set et Get e


c l a s s maClasse { p r i v a t e $props ; public function s e t ( $prop , $ v a l ) { e c h o $ p r o p < $ v a l \n ; $ t h i s >p r o p s [ $ p r o p ] = $ v a l ;

} public function g e t ( $prop ) { i f ( ! i s s e t ( $ t h i s >p r o p s [ $ p r o p ] ) ) r e t u r n e r r e u r ; e l s e r e t u r n $ t h i s >p r o p s [ $ p r o p ] ;

} } $ i = new m a C l a s s e ( ) ; $ i >t o t o = 2 ; ache toto <- 2 e c h o $ i >t o t o . \n ; ache 2 e c h o $ i >a . \n ; ache erreur
Bertrand Estellon (AMU) PHP 13 mars 2012 138 / 214

Programmation Oriente Objet e

Mthodes magiques e

Mthodes magiques Isset et Unset e


c l a s s maClasse { p r i v a t e $props ; avec les fonctions public } public u n s e t ( $prop ) { function e c h o d e s t r u c t i o n de $ p r o p \n ; u n s e t ( $ t h i s >p r o p s [ $ p r o p ] ) ; set et get dnies sur le slide prcdent e e e

function i s s e t ( $prop ) { r e t u r n i s s e t ( $ t h i s >p r o p s [ $ p r o p ] ) ;

} } $ i = new m a C l a s s e ( ) ; $ i >t o t o = 2 ; ache toto <- 2 v a r d u m p ( i s s e t ( $ i >t o t o ) ) ; ache bool(true) u n s e t ( $ i >t o t o ) ; ache destruction de toto
Bertrand Estellon (AMU) PHP 13 mars 2012 139 / 214

Vous aimerez peut-être aussi