Scalar Types Hints

173 vues

Publié le

Webinar Darkmira PHParty7 France - Présentation des avantages de la nouvelle fonctionnalité de php7, le support des types scalaires dans la définition des arguments d'une fonction

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive

Scalar Types Hints

  1. 1. Scalar Types Hints Webinar PHParty7 France - 28/11/15
  2. 2. Historique • PHP 5.0 Support des types non scalaires liés à la POO (Classes, Interfaces, mot-clé self) • PHP 5.1 Support des tableaux (mot-clé array) • PHP 5.4 Support des fonctions de rappel (type Callable) • PHP 7 Support des types scalaires (string, int, float, bool)
  3. 3. Rappels - Classes
  4. 4. Rappels - Classes Affiche : PHP7 Fatal error: Uncaught TypeError: Argument 1 passed to printList() must be an instance of ArrayObject, instance of ArrayIterator given, called in ... on line 10 and defined in ...:2
  5. 5. Rappels - Interfaces
  6. 6. Rappels - Interfaces Affiche : PHP7 PHP7 Fatal error: Uncaught TypeError: Argument 1 passed to printList() must implement interface ArrayAccess, array given, called in ... on line 10 and defined in ...:2
  7. 7. Rappels - Tableaux
  8. 8. Rappels - Tableaux Affiche : PHP7 Fatal error: Uncaught TypeError: Argument 1 passed to printList() must be of the type array, object given, called in ... on line 9 and defined in ...:2
  9. 9. Rappels - Fonctions de rappel
  10. 10. Rappels - Fonctions de rappel Affiche : PHP7 Aucune sortie Fatal error: Uncaught TypeError: Argument 2 passed to printList() must be callable, string given, called in ... on line 11 and defined in ...:2
  11. 11. PHP7 Scalar Type Hint
  12. 12. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool)
  13. 13. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool) • Désactivé par défaut
  14. 14. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool) • Désactivé par défaut • Activé à l’aide de l’instruction declare(strict_types=1); en début de fichier.
  15. 15. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool) • Désactivé par défaut • Activé à l’aide de l’instruction declare(strict_types=1); en début de fichier. • Activé uniquement sur le fichier ou l’instruction est présente.
  16. 16. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool) • Désactivé par défaut • Activé à l’aide de l’instruction declare(strict_types=1); en début de fichier. • Activé uniquement sur le fichier ou l’instruction est présente. • Déclaration : function a(int $a) {...}
  17. 17. PHP7 Scalar Type Hint • Types scalaires (primitifs) • Chaînes de caractères (mot-clé string) • Nombres décimaux entiers (mot-clé int) • Nombres décimaux à virgules flottantes (float) • Booléens (bool) • Désactivé par défaut • Activé à l’aide de l’instruction declare(strict_types=1); en début de fichier. • Activé uniquement sur le fichier ou l’instruction est présente. • Déclaration : function a(int $a) {...} • Exception dédiée : TypeError
  18. 18. Scalar Type Hint - strict type
  19. 19. Scalar Type Hint - strict type Affiche : 3 Fatal error: Uncaught TypeError: Argument 1 passed to sum() must be of the type integer, float given, called in ... on line 9 and defined in ...:4
  20. 20. Scalar Type Hint - weak type
  21. 21. Scalar Type Hint - weak type Affiche : 3 2
  22. 22. Scalar Type Hint - strict type - string exemple Affiche : PHP 7 Fatal error: Uncaught TypeError: Argument 2 passed to concat() must be of the type string, integer given, called in ... on line 9 and defined in ...:4
  23. 23. Scalar Type Hint - arguments variables
  24. 24. Scalar Type Hint - arguments variables Affiche : 10 Fatal error: Uncaught TypeError: Argument 4 passed to sum() must be of the type integer, string given, called in ... on line 9 and defined in ...:4
  25. 25. Scalar Type Hint - exception
  26. 26. Scalar Type Hint - exception Affiche : Erreur de type : Argument 1 passed to sum() must be of the type integer, float given, called in ... on line 9
  27. 27. Scalar Type Hint - null type
  28. 28. Scalar Type Hint - null type Affiche : Fatal error: Uncaught TypeError: Argument 1 passed to returnAsItIs() must be of the type integer, null given, called in ... on line 12 and defined in ...:4
  29. 29. Scalar Type Hint - effet local
  30. 30. Scalar Type Hint - effet local Affiche : 3 2
  31. 31. Avantages • Optionnel (typage faible par défaut) • Moins de code • Moins de documentation • Code plus robuste • force le développeur à identifier les E/S de ses fonctions/méthodes • permet à l’interpréteur de repérer les dysfonctionnements avant l’utilisateur • permet de consommer un service en toute sérénité
  32. 32. Avantages - moins de code, moins de doc (1)
  33. 33. Avantages - moins de code, moins de doc (2)
  34. 34. Avantages - code plus robuste (1-1) Affiche : 4 4
  35. 35. Avantages - code plus robuste (1-2) Affiche : Notice: A non well formed numeric value encountered in ... on line 2 4 Notice: A non well formed numeric value encountered in ... on line 2 4
  36. 36. Avantages - code plus robuste (1-3) Affiche : Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in ... on line 8 and defined in ...:4
  37. 37. Avantages - code plus robuste (2-1)
  38. 38. Avantages - code plus robuste (2-2)
  39. 39. Avantages - code plus robuste (2-2)
  40. 40. Autre avantages... • Sécurité accrue (filtrer les données entrantes, échapper les données sortantes !) • Écriture des tests simplifiée (moins d’assertion, moins de test) • Gain de performance (compilation en Opcode plus facile)
  41. 41. Avantages - tests unitaires simplifiés
  42. 42. Avantages - tests unitaires simplifiés
  43. 43. Avantages - tests unitaires simplifiés
  44. 44. Avantages - tests unitaires simplifiés
  45. 45. Avantages - tests unitaires simplifiés
  46. 46. Avantages - tests unitaires simplifiés
  47. 47. Des questions ?

×