Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

PHP 5.5 sort en Alpha1 et
Introduit les générateurs, le block Finally ainsi qu'une API de hachage des mots de passe

Le , par Hinault Romaric

61PARTAGES

10  0 
Le cycle de publication de PHP 5.5.0 vient officiellement de débuter.

Les développeurs de la plateforme Web ont publié la première version Alpha de PHP 5.5.0.

PHP 5.5.0 apporte des nouvelles fonctionnalités majeures au langage, dont le support des générateurs. Les générateurs sont un moyen simple et puissant de créer des itérateurs. L’introduction des générateurs dans PHP va permettre aux développeurs d’implémenter des itérateurs sans avoir à écrire beaucoup de code décoratif.

Le support des générateurs s’accompagne de l’introduction du nouveau mot clé « yield », qui permet d’implémenter un itérateur. Ce mot clé peut être utilisé suivant trois syntaxes différentes (yield, yield $value, yield $key => $value).

L’intégration d’une nouvelle API de hachage des mots de passe permettra aux développeurs et administrateurs de stocker en toute sécurité les mots de passe. En une seule ligne de code, les développeurs pourront générer un mot de passe chiffré en utilisant bcrypt.

Également au menu de PHP 5.5.0, l’ajout du mot clé finally. finally permet d'éviter au développeur d'écrire un code de nettoyage lorsqu'une exception non manipulable se produit.

L’extension intl, facilitant la gestion de l’internalisation et la localisation s’enrichit de deux nouvelles classes, permettant la manipulation des dates et des timezones (IntlCalendar et IntlGregorianCalendar) et de nouveaux itérateurs pour le parcours de texte par caractères, mots, lignes ou phrases (IntlBreakIterator, IntlRuleBasedBreakIterator et IntlCodePointBreakIterator).

Avec cette version, les boucles foreach pourront désormais supporter les listes.

Côté support, cette version met fin au support de Windows XP et Windows 2003. L’Alpha 1 de PHP 5.5 est disponible à des fins de tests. Les développeurs sont invités à télécharger cette version et fournir des commentaires et même des correctifs de bugs.

Des fonctionnalités pourront être ajoutées ou supprimées avant la publication de la prochaine mouture de PHP 5.5.0.

Télécharger les packages pour PHP 5.5 Alpha 1

Télécharger les binaires pour Windows de PHP 5.5 Alpha 1

Source : php.net

Et vous ?

Que pensez-vous des nouveautés de PHP 5.5 ? Quelles autres fonctions souhaiterez-vous trouver dans le langage ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Cryde
Membre du Club https://www.developpez.com
Le 19/11/2012 à 14:35
Que pensez-vous des nouveautés de PHP 5.5 ?

J'adore la gestion "native" des mots de passe !
Une bénédiction !
1  0 
Avatar de
https://www.developpez.com
Le 19/11/2012 à 19:00
ENFIN la gestion du "finally" il était temps !

Il est vrai que la gestion des iterator était un peut lourde, proposer une solution est une bonne chose.

D'un point de vue général, je pense que cette nouvelle stratégie de sortie de version plus fréquente apportera plus de dynamisme au langage, plus de réaction dans sa communauté et donc plus de vie à php, ce qui peut être un très bon moteur.
1  0 
Avatar de Zefling
Membre expert https://www.developpez.com
Le 20/11/2012 à 9:05
Citation Envoyé par Gugelhupf Voir le message
Vu ce qu'il est possible de faire avec le bloc try de Java 7 aujourd'hui, PHP a encore un train de retard avec le bloc finally.
Je trouve tout de même qu'on finit par en abuser et je suis pas sûr que niveau perf ça soit extra. Mais je peux me tromper.

Perso, j'attends toujours le support natif de l'Unicode. Et pour les perfs je pense aussi qu'il y a de la marge.
1  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 19/11/2012 à 19:23
Vu ce qu'il est possible de faire avec le bloc try de Java 7 aujourd'hui, PHP a encore un train de retard avec le bloc finally.
Sinon bonne nouvelle pour le generator yield et l'API de cryptage
0  0 
Avatar de kdmbella
Expert éminent https://www.developpez.com
Le 20/11/2012 à 10:50
C'est un grand ouf en ce qui concerne les itérator car la "tonne" de code qu'il fallait écrire pour en implémenté un ...
0  0 
Avatar de pcescato
Candidat au Club https://www.developpez.com
Le 23/11/2012 à 1:55
Citation Envoyé par Gugelhupf Voir le message
Vu ce qu'il est possible de faire avec le bloc try de Java 7 aujourd'hui, PHP a encore un train de retard avec le bloc finally.
Vu les performances et le confort d'une A8 TDI, le New Holland R7 185 est à la ramasse... sur route ! Mais pour labourer, je voudrais voir les perfs de la A8 ! Java a son utilité, ses contraintes, ses performances, ses domaines de prédilection... pour PHP c'est pareil. Ne comparons que ce qui est réellement comparable (A toutes fins utiles, le New Holland est un tracteur).
0  0 
Avatar de Jarodd
Membre expérimenté https://www.developpez.com
Le 25/03/2013 à 12:29
Bonjour,

L'exemple de finally (#2) sur la doc n'est pas très clair...

Dans cet exemple on a ce résultat :
Code : Sélectionner tout
1
2
3
4
5
6
0.2
Première fin.
Exception reçue : Division par zéro.
Seconde fin.
Bonjour le monde !
Or quel est l'intérêt de mettre "première fin" et "seconde fin" dans un finally, alors que le mettre en dehors du try catch (comme "bonjour le monde !" a le même effet ?
0  0 
Avatar de Celira
Modératrice https://www.developpez.com
Le 25/03/2013 à 13:46
Je pense que c'est pour illustrer le finally, et notamment le fait qu'on passe toujours dedans : le "Première fin" correspond à un cas où il n'y a pas d'exception et le "Seconde fin" à un cas où une exception a été attrapée.
0  0 
Avatar de atha2
Membre éprouvé https://www.developpez.com
Le 25/03/2013 à 16:01
Citation Envoyé par Jarodd  Voir le message
Bonjour,

L'exemple de finally (#2) sur la doc n'est pas très clair...

Dans cet exemple on a ce résultat :
Code : Sélectionner tout
1
2
3
4
5
6
 
0.2 
Première fin. 
Exception reçue : Division par zéro. 
Seconde fin. 
Bonjour le monde !
Or quel est l'intérêt de mettre "première fin" et "seconde fin" dans un finally, alors que le mettre en dehors du try catch (comme "bonjour le monde !") a le même effet ?

Le bloque finally n'est pas vraiment utile dans le cas d'un structure try-catch-finally. La seule utilité que je lui vois dans ce cas est la documentation (finally <=> libération des ressources). Par contre on peut l'utiliser de la façon suivante (en reprenant l'exemple) :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
try { 
  try { 
      echo inverse(5) . "\n"; 
  }finally { 
      echo "Première fin.\n"; 
  } 
 
  try { 
      echo inverse(0) . "\n"; 
  }finally { 
      echo "Seconde fin.\n"; 
  } 
} catch (Exception $e) { 
    echo 'Exception reçue : ',  $e->getMessage(), "\n"; 
}// On continue l'exécution 
echo 'Bonjour le monde !';
C'est encore plus utile dans le cas où on a plusieurs try-finally imbriqués pour gérer plusieurs ressources mais qu'on veux traiter les exceptions de manière globale.

Citation Envoyé par Gugelhupf  Voir le message
Vu ce qu'il est possible de faire avec le bloc try de Java 7 aujourd'hui, PHP a encore un train de retard avec le bloc finally.

Citation Envoyé par pcescato  Voir le message
Vu les performances et le confort d'une A8 TDI, le New Holland R7 185 est à la ramasse... sur route ! Mais pour labourer, je voudrais voir les perfs de la A8 ! Java a son utilité, ses contraintes, ses performances, ses domaines de prédilection... pour PHP c'est pareil. Ne comparons que ce qui est réellement comparable (A toutes fins utiles, le New Holland est un tracteur).

La nouvelle gestion des try-with-ressource en Java est juste un sucre syntaxique. Il n'y a donc pas d'impact sur les performance. Elle pourrait très bien être ajouté à PHP.
En gros :
Code java : Sélectionner tout
1
2
3
4
5
static String readFirstLineFromFile(String path) throws IOException {      
 try (BufferedReader br = new BufferedReader(new FileReader(path))) {    
      return br.readLine();    
 }  
}
est remplacé par :
Code java : Sélectionner tout
1
2
3
4
5
6
7
8
static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException { 
   BufferedReader br = new BufferedReader(new FileReader(path));      
   try {        
     return br.readLine();   
   } finally {    
     if (br != null) br.close();   
   } 
}
Par contre toutes les classes IO des API ont été modifiées pour ajouter l'interface Closeable (close(); )
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 25/03/2013 à 20:53
Je ne savais pas que c'était une simple sucre syntaxique.
Mais il y a tout de même une différence, c'est que la portée des objets instanciés dans le cas d'un try-with-ressource sont limités au bloc try.
Enfin bref, plus court et plus propre, parfait pour un langage de haut niveau.
0  0