PHP 5.4.0 stable est disponible : tour d'horizon des nouveautés !

2012-03-01

Et voilà, PHP 5.3.0 et ses namespaces et closures sont maintenant censés être rentrés dans les moeurs (je dis censé car beaucoup de projets, en entreprise notamment, n'osent pas migrer leurs applications ...). Depuis ce soir, la nouvelle version de PHP 5.4.0 est disponible, et au moment ou mon serveur dédié est en train de compiler, j'en profite pour vous faire un petit article sur les nouveautés apportées.  

1. Nouvelle syntaxe courte pour les tableaux (arrays) et deréférencement

Il est maintenant possible d'écrire un tableau PHP de ces deux façons :
$array = array('foo', 'foo' => 'bar');
ou
$array = ['foo', 'foo' => 'bar'];
De plus, dans le cas ou nous avons une méthode method() qui nous renvoie un tableau avec en indice 0 un objet, d'appeler directement une méthode sur l'objet, de la façon suivante : Pour plus d'informations sur ces deux nouveautés, voici les liens vers les RFC sur le wiki de PHP :

2. Petite amélioration des closures par rapport à PHP 5.3

En plus des closures déjà existentes depuis PHP 5.3, il est maintenant possible d'appeler une méthode de callback fournie directement par une autre méthode d'un objet en utilisant un array, de la façon suivante :

$callback = array($object, 'myMethod');
$callback();

3. L'arrivée des Traits va redonner un coup de jeune à votre code !

Je pense que c'est une des nouveautés qui va faire du bien dans la façon de développer. Vous allez en effet pouvoir écrire/définir des "Traits", sortes de structures, et les utiliser dans vos classes. À noter qu'une classe n'implémente pas un Trait, il l'utilise simplement (comme j'ai pu le lire : de façon horizontale, allez savoir pourquoi). Petit exemple illustré :
trait Price {
    public function getPrice() {
        return 20.00;
    }
}

class Vehicle {}

class Car extends Vehicle {
    use Price;
}

$myCar = new Car();
echo $myCar->getPrice(); // 20.00
J'attends d'utiliser cette nouveauté d'avantage pour vous faire un retour plus intéressant !

4. L'avancée des uploads en session via les formulaires

Et non, vous ne rêvez pas ! Il va maintenant être possible, en PHP, de connaître l'état d'avancement des uploads, et ce, de manière plutôt simple. Imaginez un formulaire HTML, avec comme attribut value="myuploadform" et en attribut name, la valeur PHP suivante :
ini_get("session.upload_progress.name");
Vous pourrez récupérer à tout moment la progression en session via cette clé :
$_SESSION["upload_progress_myuploadform"]

5. Un serveur HTTP compilé avec PHP

Vous allez en effet pouvoir lancer à tout moment un serveur HTTP avec PHP afin de tester rapidement vos développements. Pour ce faire, rien de plus simple, pour lancer un serveur web sur le port 8080, il suffit de taper dans votre terminal/console :
php -S localhost:8080
À noter que des options sont disponibles pour définir par exemple un document root personnalisé.

6. Et bien d'autres choses ont été modifiées

  • L'option d'activation des magic quotes a été supprimée,
  • La possibilité de désactiver les requêtes POST,
Bref, un tas de choses qu'il me reste encore à tester !

Comments