Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

PHP 5 et la programmation objet

938 vues

Publié le

Présentation des aspects objet du PHP 5

Publié dans : Ingénierie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

×