Scalar Types Hints
Webinar PHParty7 France - 28/11/15
Historique
• PHP 5.0
Support des types non scalaires liés à la POO (Classes, Interfaces,
mot-clé self)
• PHP 5.1
Support d...
Rappels - Classes
Rappels - Classes
Affiche :
PHP7
Fatal error: Uncaught TypeError: Argument 1
passed to printList() must be an instance of
...
Rappels - Interfaces
Rappels - Interfaces
Affiche :
PHP7
PHP7
Fatal error: Uncaught TypeError: Argument 1
passed to printList() must implement ...
Rappels - Tableaux
Rappels - Tableaux
Affiche :
PHP7
Fatal error: Uncaught TypeError: Argument 1
passed to printList() must be of the type ar...
Rappels - Fonctions de rappel
Rappels - Fonctions de rappel
Affiche :
PHP7
Aucune sortie
Fatal error: Uncaught TypeError: Argument 2
passed to printList...
PHP7 Scalar Type Hint
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
PHP7 Scalar Type Hint
• Types scalaires (primitifs)
• Chaînes de caractères (mot-clé string)
• Nombres décimaux entiers (m...
Scalar Type Hint - strict type
Scalar Type Hint - strict type
Affiche :
3
Fatal error: Uncaught TypeError: Argument 1
passed to sum() must be of the type...
Scalar Type Hint - weak type
Scalar Type Hint - weak type
Affiche :
3
2
Scalar Type Hint - strict type -
string exemple
Affiche :
PHP 7
Fatal error: Uncaught TypeError: Argument 2
passed to conc...
Scalar Type Hint - arguments
variables
Scalar Type Hint - arguments
variables
Affiche :
10
Fatal error: Uncaught TypeError: Argument 4
passed to sum() must be of...
Scalar Type Hint - exception
Scalar Type Hint - exception
Affiche :
Erreur de type : Argument 1 passed to sum() must
be of the type integer,
float give...
Scalar Type Hint - null type
Scalar Type Hint - null type
Affiche :
Fatal error: Uncaught TypeError: Argument 1
passed to returnAsItIs() must be of the...
Scalar Type Hint - effet local
Scalar Type Hint - effet local
Affiche :
3
2
Avantages
• Optionnel (typage faible par défaut)
• Moins de code
• Moins de documentation
• Code plus robuste
• force le d...
Avantages - moins de code,
moins de doc (1)
Avantages - moins de code,
moins de doc (2)
Avantages - code plus
robuste (1-1)
Affiche :
4
4
Avantages - code plus
robuste (1-2)
Affiche :
Notice: A non well formed numeric value
encountered in ... on line 2
4
Notic...
Avantages - code plus
robuste (1-3)
Affiche :
Fatal error: Uncaught TypeError: Argument 2
passed to sum() must be of the t...
Avantages - code plus
robuste (2-1)
Avantages - code plus
robuste (2-2)
Avantages - code plus
robuste (2-2)
Autre avantages...
• Sécurité accrue (filtrer les données entrantes,
échapper les données sortantes !)
• Écriture des test...
Avantages - tests unitaires
simplifiés
Avantages - tests unitaires
simplifiés
Avantages - tests unitaires
simplifiés
Avantages - tests unitaires
simplifiés
Avantages - tests unitaires
simplifiés
Avantages - tests unitaires
simplifiés
Des questions ?
Prochain SlideShare
Chargement dans…5
×

Scalar Types Hints

155 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
155
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
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 ?

×