IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

La première bêta de PHP 5.5 disponible
Avec Zend Opcache pour améliorer les performances des applications

Le , par Hinault Romaric

5PARTAGES

4  0 
Cette étape importante dans le cycle de développement du langage de programmation Web marque le gel des nouvelles fonctionnelles, ce qui signifie qu’aucune autre nouvelle caractéristique ne sera ajoutée jusqu’à la sortie de la version finale.


Au menu des nouveautés majeures :

  • l’ajout d’array_column, une fonction qui permet de retourner une colonne dans un tableau multidimensionnel ;
  • l’intégration de Zend Opcache extension (fonction désactivée par défaut. Son utilisation nécessite l’édition du fichier INI) ;
  • la prise en charge des clés non scalaires pour les itérateurs dans le foreach ;
  • la possibilité de modifier le titre des processus dans « CLI/CLI-Server SAPIs ».


Zend Opcache est le nouveau nom qui a été attribué à Zend Optimizer+. Cette fonctionnalité permet de charger plus rapidement les pages PHP en améliorant les performances du bytecode généré par l’interpréteur de code source PHP.

En plus de ces nouvelles fonctions, PHP 5.5 introduit également le support des générateurs, le nouveau mot clé « yield », une nouvelle API de hachage des mots de passe et le nouveau mot clé « finally » (voir section « le dossier complet de la rédaction »).

La prochaine bêta de PHP 5.5 est prévue pour la quatrième semaine d’avril. Les développeurs sont invités à tester cette version et à apporter leur feedback pour permettre une sortie rapide de la version finale.

Télécharger le bêta de PHP 5.5

Source : site du projet

Et vous ?

Utilisez-vous Zend Optimizer ? Que pensez-vous de son intégration dans PHP 5.5 ?

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

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