Beruflich Dokumente
Kultur Dokumente
Bertrand Estellon
Aix-Marseille Universit e
13 mars 2012
PHP
13 mars 2012
1 / 214
Introduction
PHP
13 mars 2012
122 / 214
Classe et instance
f u n c t i o n maMethode ( $ a r g 1 , $ a r g 2 ) {
Classe et instance
f u n c t i o n maMethode ( $ a r g 1 , $ a r g 2 ) { . . . }
Classe et instance
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
Classe et instance
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
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 ( ) ; }
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 ;
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 ) ;
PHP
13 mars 2012
131 / 214
Hritage et interface e
Hritage et interface 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 ;
PHP
13 mars 2012
134 / 214
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
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
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 ;
PHP
13 mars 2012
137 / 214
Mthodes magiques e
} } $ 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
Mthodes magiques e
} } $ 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