Jean-Marie Renouard 
LightPath 2014©
Le logo PHP est du domaine public 
http://commons.wikimedia.org/wiki/File:PHP-logo.svg 
Ce document est licencié sous l...
Syntaxe de base 
Auto-chargement de classes 
Constructeurs et destructeurs 
Visibilité 
L'héritage 
L'opérateur de r...
Constantes de classe 
Abstraction de classes 
Interfaces 
Surcharge 
Parcours d'objets 
Masques 
Méthodes magiques ...
Mot-clé "final" 
Clonage d'objets 
Comparaison d'objets 
Réflexion 
Typage objet 
Les exceptions 
Les traits 
Light...
LightPath 2014© - http://www.jmrenouard.fr 
6
Mot clé : class 
Exemple 
class A { 
function toto() { echo « toto de A » ; } 
} 
class B{ 
function titi(){ A::toto(); ...
Creation d'objet de la classe 
$a = new A(); 
$b = new B(); 
Utilisation des objets 
$b->titi(); 
B::titi(); 
$a->t...
LightPath 2014© - http://www.jmrenouard.fr 
9
Exécution automatique de code de chargement de classe 
function __autoload($class_name) { 
require_once $class_name . '.p...
LightPath 2014© - http://www.jmrenouard.fr 
11
Constructeur : fonction spéciale exécutée à la création de l'objet 
1 seul constructeur possible 
Plusieurs paramètres ...
class A { 
function __construct() { 
print "A la construction de l'objet de type classe An"; 
} 
} 
LightPath 2014© - http...
class A { 
function __destruct() { 
print "A la destruction de l'objet de type classe An"; 
} 
} 
LightPath 2014© - http:/...
LightPath 2014© - http://www.jmrenouard.fr 
15
Accès “public” : accès depuis l'extérieur 
 Accès “protected” : accès depuis une classe dérivée 
 Accès “private” : acc...
LightPath 2014© - http://www.jmrenouard.fr 
17
LightPath 2014© - http://www.jmrenouard.fr 
18
Moyen de généraliser des traitements 
Moyen de dériver des comportements spécifiques 
Mot clé : exends 
◦class deriveB ...
Moyen d'accèder au membre d'une classe 
Résolution des ambibuités de nommage 
$a n'est pas équivalent à $MaClasse::a 
...
LightPath 2014© - http://www.jmrenouard.fr 
21
Les variables statiques sont des variables communes à toutes les instances de la classe 
Le code d'une fonction statique...
Variable dont la valeur est immuable 
◦const constant = 'valeur constante'; 
LightPath 2014© - http://www.jmrenouard.fr 
...
LightPath 2014© - http://www.jmrenouard.fr 
24
L'abstraction de classe consiste à déclarer des fonctions sans code. 
Seule une classe dérivée ( extends ) définissant l...
LightPath 2014© - http://www.jmrenouard.fr 
26
Un ensemble de déclaration sans code. 
Equivalent à une classe n'ayant que des fonctions publiques abstraites 
Mot clé ...
LightPath 2014© - http://www.jmrenouard.fr 
28
La lecture et l'écriture peuvent être interceptées 
void __set ( string name, mixed value ) 
mixed __get ( string name ...
$this : variable contenant l'objet courant 
$this vu comme un tableau à clé 
Chaque objet vu comme tableau à clé 
$clas...
Modèle de conception 
◦Factory : modèle permettant de faciliter la construction d'un nouvel objet 
◦Singleton : modèle pe...
__sleep :Avant sérialisation de l'objet 
__wakeup : Après sérialisation de l'objet 
 __toString : conversion en chaîne ...
LightPath 2014© - http://www.jmrenouard.fr 
33
La fonction “final” est la dernière de la hiérarchie. 
La fonction ne peut pas être dérivée 
LightPath 2014© - http://ww...
LightPath 2014© - http://www.jmrenouard.fr 
35
Dupliquer un objet et l'ensemble de son état 
Copie de zone mémoire 
Ce n'est pas une simple copie de référence 
Fonct...
LightPath 2014© - http://www.jmrenouard.fr 
37
Pas de surcharge possible des opérateurs 
A défaut, écrire une fonction de comparaison 
Les opérateurs classiques ne co...
LightPath 2014© - http://www.jmrenouard.fr 
39
Capacité d'introspecter la définition d'une variable 
API permettant : 
◦Créer des instances 
◦Consulter les méthodes de...
class Reflection : classe de base 
class ReflectionFunction : Introspection de fonction 
class ReflectionParameter: Int...
Connaitre la structure de la classe ReflexionFunction 
<?php 
Reflection::export(new ReflectionClass('ReflexionFunction')...
LightPath 2014© - http://www.jmrenouard.fr 
43
Les objets sont de type objet :) 
Typage dynamique est sous jacent au modèle objet 
Plusieurs types possibles 
On peut...
LightPath 2014© - http://www.jmrenouard.fr 
45
Bloc à surveiller : try { ... } 
Exception à traiter catch( Exception e) {...} 
Pas de bloc finally comme en C++ ou Jav...
Try { 
$error = 'Toujours lancer cette erreur'; 
throw new Exception($error); 
// le code suivant une exception n'est pas ...
LightPath 2014© - http://www.jmrenouard.fr 
48
Bloc de code insérable dans une classe 
Evite la redondance(copier/coller) dans les objets 
Equivalent d‟un include ou ...
Utilisation d‟un trait dans une classe 
Mot clé use 
Exemple: 
class MaClassePoli { use DireBonjour; 
function direAdi...
Documentation du PHP 
http://www.php.net/docs 
LightPath 2014© - http://www.jmrenouard.fr 
51
LightPath: 
◦Société de conseil et d‟ingénierie 
◦Formations, Conseil, Audit et mise en oeuvre 
◦jmrenouard@lightpath.fr ...
Prochain SlideShare
Chargement dans…5
×

PHP 5 et la programmation objet

690 vues

Publié le

Présentation des aspects objet du PHP 5

Publié dans : Ingénierie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
690
Sur SlideShare
0
Issues des intégrations
0
Intégrations
151
Actions
Partages
0
Téléchargements
39
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

PHP 5 et la programmation objet

  1. 1. Jean-Marie Renouard LightPath 2014©
  2. 2. Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
  3. 3. Syntaxe de base Auto-chargement de classes Constructeurs et destructeurs Visibilité L'héritage L'opérateur de résolution de portée (::) Les données statiques LightPath 2014© - http://www.jmrenouard.fr 3
  4. 4. Constantes de classe Abstraction de classes Interfaces Surcharge Parcours d'objets Masques Méthodes magiques LightPath 2014© - http://www.jmrenouard.fr 4
  5. 5. Mot-clé "final" Clonage d'objets Comparaison d'objets Réflexion Typage objet Les exceptions Les traits LightPath 2014© - http://www.jmrenouard.fr 5
  6. 6. LightPath 2014© - http://www.jmrenouard.fr 6
  7. 7. Mot clé : class Exemple class A { function toto() { echo « toto de A » ; } } class B{ function titi(){ A::toto(); } } LightPath 2014© - http://www.jmrenouard.fr 7
  8. 8. Creation d'objet de la classe $a = new A(); $b = new B(); Utilisation des objets $b->titi(); B::titi(); $a->toto(); A::toto(); LightPath 2014© - http://www.jmrenouard.fr 8
  9. 9. LightPath 2014© - http://www.jmrenouard.fr 9
  10. 10. Exécution automatique de code de chargement de classe function __autoload($class_name) { require_once $class_name . '.php'; } $obj = new MaClasse1(); $obj2 = new MaClasse2(); LightPath 2014© - http://www.jmrenouard.fr 10
  11. 11. LightPath 2014© - http://www.jmrenouard.fr 11
  12. 12. Constructeur : fonction spéciale exécutée à la création de l'objet 1 seul constructeur possible Plusieurs paramètres possibles Destructeur : fonction spéciale éxécutée à la destruction de l'objet LightPath 2014© - http://www.jmrenouard.fr 12
  13. 13. class A { function __construct() { print "A la construction de l'objet de type classe An"; } } LightPath 2014© - http://www.jmrenouard.fr 13
  14. 14. class A { function __destruct() { print "A la destruction de l'objet de type classe An"; } } LightPath 2014© - http://www.jmrenouard.fr 14
  15. 15. LightPath 2014© - http://www.jmrenouard.fr 15
  16. 16. Accès “public” : accès depuis l'extérieur  Accès “protected” : accès depuis une classe dérivée  Accès “private” : accès depuis une fonction de la classe uniquement LightPath 2014© - http://www.jmrenouard.fr 16
  17. 17. LightPath 2014© - http://www.jmrenouard.fr 17
  18. 18. LightPath 2014© - http://www.jmrenouard.fr 18
  19. 19. Moyen de généraliser des traitements Moyen de dériver des comportements spécifiques Mot clé : exends ◦class deriveB extends A LightPath 2014© - http://www.jmrenouard.fr 19
  20. 20. Moyen d'accèder au membre d'une classe Résolution des ambibuités de nommage $a n'est pas équivalent à $MaClasse::a self::xxx est un espace de nommage pointant sur l'objet courant parent:: xxx est un espace de nommage de la classe de base LightPath 2014© - http://www.jmrenouard.fr 20
  21. 21. LightPath 2014© - http://www.jmrenouard.fr 21
  22. 22. Les variables statiques sont des variables communes à toutes les instances de la classe Le code d'une fonction statique n'est pas dupliqué La variable statique possède des contraintes d'accès concurrentiels LightPath 2014© - http://www.jmrenouard.fr 22
  23. 23. Variable dont la valeur est immuable ◦const constant = 'valeur constante'; LightPath 2014© - http://www.jmrenouard.fr 23
  24. 24. LightPath 2014© - http://www.jmrenouard.fr 24
  25. 25. L'abstraction de classe consiste à déclarer des fonctions sans code. Seule une classe dérivée ( extends ) définissant le code des fonctions peut être instanciée. La démocratie : principe abstrait La république : incarnation concrète de la démocratie LightPath 2014© - http://www.jmrenouard.fr 25
  26. 26. LightPath 2014© - http://www.jmrenouard.fr 26
  27. 27. Un ensemble de déclaration sans code. Equivalent à une classe n'ayant que des fonctions publiques abstraites Mot clé “implements” permets à une classe de se faire passer pour l'interface interface Dieu { public function invoquerLePouvoir(); } LightPath 2014© - http://www.jmrenouard.fr 27
  28. 28. LightPath 2014© - http://www.jmrenouard.fr 28
  29. 29. La lecture et l'écriture peuvent être interceptées void __set ( string name, mixed value ) mixed __get ( string name ) bool __isset ( string name ) void __unset ( string name ) mixed __call ( string name, array arguments ) LightPath 2014© - http://www.jmrenouard.fr 29
  30. 30. $this : variable contenant l'objet courant $this vu comme un tableau à clé Chaque objet vu comme tableau à clé $class = new MyClass(); foreach($class as $key => $value) { print "$key => $valuen"; } LightPath 2014© - http://www.jmrenouard.fr 30
  31. 31. Modèle de conception ◦Factory : modèle permettant de faciliter la construction d'un nouvel objet ◦Singleton : modèle permettant de limiter le nombre d'objet crée par classe LightPath 2014© - http://www.jmrenouard.fr 31
  32. 32. __sleep :Avant sérialisation de l'objet __wakeup : Après sérialisation de l'objet  __toString : conversion en chaîne  __set_state : export de la définition des objets  __clone : Opération en cas de clonage LightPath 2014© - http://www.jmrenouard.fr 32
  33. 33. LightPath 2014© - http://www.jmrenouard.fr 33
  34. 34. La fonction “final” est la dernière de la hiérarchie. La fonction ne peut pas être dérivée LightPath 2014© - http://www.jmrenouard.fr 34
  35. 35. LightPath 2014© - http://www.jmrenouard.fr 35
  36. 36. Dupliquer un objet et l'ensemble de son état Copie de zone mémoire Ce n'est pas une simple copie de référence Fonction spéciale : __clone $copie_d_objet = clone $objet; LightPath 2014© - http://www.jmrenouard.fr 36
  37. 37. LightPath 2014© - http://www.jmrenouard.fr 37
  38. 38. Pas de surcharge possible des opérateurs A défaut, écrire une fonction de comparaison Les opérateurs classiques ne comparent que l'adresse ou référence. L'état et le type des objets ne comptent pas dans les comparaisons par opérateur LightPath 2014© - http://www.jmrenouard.fr 38
  39. 39. LightPath 2014© - http://www.jmrenouard.fr 39
  40. 40. Capacité d'introspecter la définition d'une variable API permettant : ◦Créer des instances ◦Consulter les méthodes des classes ◦Récupérer l'information sur la classe LightPath 2014© - http://www.jmrenouard.fr 40
  41. 41. class Reflection : classe de base class ReflectionFunction : Introspection de fonction class ReflectionParameter: Introspection de paramètre class ReflectionMethod : Introspection de méthodes class ReflectionClass : Introspection de classe class ReflectionObject: Introspection d'objet class ReflectionProperty : Introspection de propriété class ReflectionExtension : Extension de l'introspection LightPath 2014© - http://www.jmrenouard.fr 41
  42. 42. Connaitre la structure de la classe ReflexionFunction <?php Reflection::export(new ReflectionClass('ReflexionFunction')); ?> LightPath 2014© - http://www.jmrenouard.fr 42
  43. 43. LightPath 2014© - http://www.jmrenouard.fr 43
  44. 44. Les objets sont de type objet :) Typage dynamique est sous jacent au modèle objet Plusieurs types possibles On peut imposer le type dans les fonctions ◦function test_array(array $input); ◦function test_class_A(A $a); LightPath 2014© - http://www.jmrenouard.fr 44
  45. 45. LightPath 2014© - http://www.jmrenouard.fr 45
  46. 46. Bloc à surveiller : try { ... } Exception à traiter catch( Exception e) {...} Pas de bloc finally comme en C++ ou Java ◦Bloc Finally uniquement à partir de PHP 5.5 Lancement d'exception : throw new Exception(« message »); LightPath 2014© - http://www.jmrenouard.fr 46
  47. 47. Try { $error = 'Toujours lancer cette erreur'; throw new Exception($error); // le code suivant une exception n'est pas exécuté. echo 'Jamais exécuté'; }catch (Exception $e) { echo "Capture de l'exception : ", $e->getMessage(), "n"; } LightPath 2014© - http://www.jmrenouard.fr 47
  48. 48. LightPath 2014© - http://www.jmrenouard.fr 48
  49. 49. Bloc de code insérable dans une classe Evite la redondance(copier/coller) dans les objets Equivalent d‟un include ou require version objet Uniquement en PHP 5.4 Syntaxe: ◦trait DireBonjour { public function direBonjour() { echo „Bonjour'; } } LightPath 2014© - http://www.jmrenouard.fr 49
  50. 50. Utilisation d‟un trait dans une classe Mot clé use Exemple: class MaClassePoli { use DireBonjour; function direAdieu() { echo “Adieu”; } } LightPath 2014© - http://www.jmrenouard.fr 50
  51. 51. Documentation du PHP http://www.php.net/docs LightPath 2014© - http://www.jmrenouard.fr 51
  52. 52. LightPath: ◦Société de conseil et d‟ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 52

×