- 16/05/2006 1:19 pm -
PHP 6 - Les changements et les nouveautés...
Alors que PHP5 commence seulement a rentrer dans les mœurs. On entends déjà parler de PHP 6.. Quels sont les changements et les nouveautés de prévu.
Je vais vous présenter les gros changements et nouveautés qui sont pour moi intéressantes.
Support Unicode en natif
Il va y avoir dans cette version, un support unicode en natif que l'on pourra activer ou non dans le php.ini. Le fait de l'activer nous offrera un panel de fonctions (natives elles-aussi) pour gérer l'encodage.
Donc, normalement plus de problème d'encodage, notament je pense que cela pourra servir pour l'Ajax qui envoie forcément ces requête en UTF-8.
Plusieurs fonctionnalités nettoyées
Register Globals, Magic Quotes et Safe Mode
Ces fonctionnalités dont on entend toujours et encore parler pour cause de sécurité vont être tout simplement supprimées. Quand elles seront détectées dans le php.ini il y aura une E_CORE_ERROR de générer.
Pour moi ça c'est tant mieux, y en a marre du code pourri que donne les gens qui codent avecregister_globalsetMagic Quotecependant fini la compatilité ascendante. Cependant, pourSafe Modeon pourrait croire que ça ne va pas contribuer au développement de PHP6 chez les hébergeurs qui utilisent souvent leSafe Modeavece l'optionopen_basedir, et bien l'optionopen_basedirsera garder!
De la même manière lesregister_long_arrays, HTTP_*_VARSvont être supprimés.
PECL
Pour les gens qui ne savent plus ou pas ce qu'est PECL :
PECL est un dépôt d'extensions PHP qui vous sont disponibles via le système de paquet PEAR.
Toutes ces extensions peuvent biensûr être compilé en static dans php ;)
Donc plusieurs extension vont être déplacé dans PECL notament toutesles "non-PDO" DataBases(mysql,mysqli etc...) etEreg. Et par ailleurs, d'autres vont être intégrées commeXMLReader et XMLWriteretFileInfo.
En fait, PHP6 va nous pousser à utiliser PDO qui est une bonne chose je pense.
Les ajouts
Les entiers de 64Bits
Ca peut toujours servir ;)
Goto
En fait c'est une extension de break qui permettra d'envoyer vers un label (Moi ça me rend nostalgique ça, je pense à mes cours d'Assembleur jadis...)
Un petit exemple :
<?php for ($i = 0; $i < 9; $i++) { if (true) { break blah; } echo "not shown"; blah: echo "iteration $i\n"; } ?>
ifsetor()
C'est carément bien ce nouvel opérateur :
<?php /* SI $plop est setter, alors $foo recevra $plop, sinon 42 lui sera assigné . */ $foo = ifsetor($plop, 42); ?>
Mais, ils ne sont pas encore d'accord sur l'implémentation... donc on verra bien.
Syntaxe multi-dimensionnel pour Foreach
Ca aussi c'est trop bien :
<?php $a = array(array(1, 2), array(3, 4)); foreach( $a as $k => list($a, $b)) { print " "; } ?>
{} vs []
Pour vous simplifier tout, les {} seront dépréciés au profit des [], on pourra faire notamment :
<?php /* Pour les strings et les arrays, [] marchera âvec substr()/array_slice() : * [2,3] =elements (or characters) 2, 3, 4 * [2,] = elements (or characters) 2 jusqu'à la fin * [,2]= elements (or characters) 0, 1, 2 * [,-2] = du début jusqu'au dernier moins deux valable pour un array/string * [-3,2] pareil que pour substr etarray_slice() On pourra faire par exemple : * $str = "foo"; $str[] = "d"; concaténation * $str = "fo"; $str[] = "od"; => "food" * $str = ""; $str[] = "d"; devrait valloir "d" */ ?>
Fonctionnalités du mode Objet
Appel automatique du constructeur
Quand on étend une classe de PDA par exemple, le constructeur parent serait appellé intuitivement..
Espaces de noms
Comme en Java est dans n'importe langage objet digne de ce nom, es NameSpaces arrivent avec PHP
Méthodes Static
PHP5 l'autorisait, PHP6 non ! Enfin !!! Il sera maitenant imossible d'appeller une méthode static en mode dynamique et inversement. Une E_FATAL sera générée.
Toutes les non-Fatales erreurs pourront devenir des exceptions
Et bien NON, ils ne le feront pas... mais je le signale pour vous donner la solution à cette super idée ;)
<?php function error_handler($errorType, $message) { if ($errorType == E_NOTICE) { throw new Exception( $message, $errorType); } } set_error_handler('error_handler'); // Throws a notice echo $new; ?>
Conclusion
Je pense que tous ces changements vont le faire, on voit vraiment un changement dans cette version, PHP6 ce détache vraiment, bien plus que PHP5. Bien que le mode Objet ne soit pas encore parfait, on y vient! Moi il me manque la surcharge de méthodes comme en JAVA pour être aux anges ;)
Vivement ça sortie...









