Depuis le 3 août, php 5.4 alpha3 est disponible et devrait être suivi dès le 1er septembre par la première beta de cette nouvelle version du langage. Bien que son numéro semble indiquer une version mineure, c’est bien une version majeure du langage qui se prépare, à l’instar de php 5.3. En effet, cette nouvelle version apporte de nombreuses nouveautés très intéressantes, et marque également un tournant dans la gestion du langage, de son cycle de développement et de sa communauté.

Commençons par les nouvelles fonctionnalités qui devraient ravir bon nombre de développeurs.

1) Les Traits

Les traits sont un ajout majeur au modèle objet de php, permettant une forme « d’héritage horizontal » (Horizontal Reuse). Cette nouvelle fonctionnalité permet de s’affranchir de certaines limitations de l’héritage qui ne peut être multiple.

Un trait est donc une « classe » dont les méthodes vont pouvoir être réutilisées par d’autres classes grâce au mot-clé use.

Exemple :

log('something done');
    }
}
 
$test = new Test();
$test->log('start log');
$test->doSomething();

L’exemple ci-dessus va afficher :

start log
something done

On va donc pouvoir regrouper certains comportements dans des traits et ainsi éviter des héritages purement fonctionnels (l’héritage est censé représenter une réelle relation entre les parents et enfants, et pas seulement un partage de fonctionnalités).

Pour plus d’informations sur les traits vous pouvez consulter la doc de php ou la RFC correspondante

2) Nouveauté concernant les tableaux

Il sera maintenant possible de déclarer des tableaux à l’aide d’une syntaxe abrégée :

 'a', 'b' => 'b', 'c' => 'c'];

Voir la RFC correspondante

Il sera également possible d’accéder directement à un élément spécifique d’un tableau lorsque celui-ci est le retour d’un appel de fonction ()

Avant :

Avec php 5.4
<pre lang="php">Les appels peuvent être chainés, par exemple si l'élément retourné est un objet :
<pre lang="php">getValeur();

3) Serveur web intégré
Un serveur HTTP sera dorénavant livré avec PHP. Ce serveur est destiné à un environnement de développement uniquement.

Le démarrage du serveur se fait en ligne de commande via l’exécutable php classique avec l’option -S. Il est possible de définir le document_root avec l’option -t

Ce serveur ne dispose bien entendu pas de toutes les fonctionnalités qu’on va pouvoir retrouver sur un serveur Apache par exemple, mais ses performances semblent à la hauteur (voir Test du serveur http intégré à PHP 5.4 sur mageekblog)
Une Documentation est déjà disponible sur le site de PHP
4) Appels dynamiques de méthodes statiques
Avec php 5.4 il sera possible d’utiliser une variable pour appeler une méthode statique:

<strong><span style="text-decoration: underline;">5) Suppressions </span></strong>
 
Et oui, cette nouvelle mouture ne fait pas qu'ajouter de nouvelles fonctionnalités ! Certaines, actuellement dépréciées, vont être tout bonnement supprimées, et ceux pour le bien du langage ! C'est notamment le cas des "magic_quotes", de "register_globals" ou encore des "short_tags".
 
La syntaxe :
 
est cependant conservée et ne nécessitera plus de configuration particulière pour être fonctionnelle
 
Cette liste est loin d'être exhaustive mais représente à mon sens les fonctionnalités qui seront les plus utilisées par la majorité des développeurs.
 
Enfin il est intéressant de noter des changements majeurs dans la manière de gérer cette sortie. En effet le processus de release du langage fait désormais l'objet d'une <a href="https://wiki.php.net/rfc/releaseprocess">RFC</a> votée par la majorité des contributeurs. Le système de vote fait lui aussi l'objet d'une <a href="https://wiki.php.net/rfc/voting">RFC</a> et permettra une meilleur visibilité sur le choix des nouveautés du langage.
 
La communauté, en particulier les contributeurs, s'organise et le langage s'étoffe tout en se débarrassant de certaines fonctionnalités reconnues comme allant à l'encontre des bonnes pratiques de programmation. PHP semble donc sur une nouvelle voie plus claire et plus transparente, ce qui nous laisse présager de bonnes choses pour le développement du langage.