Le PHP nouveau va bientôt arriver !
Source :
http://www.php.net/~derick/meeting-notes.html
Résumé trouvé sur
le blog de plopix :
PHP 6 - Les changements et les nouveautés...
mardi 16 mai 2006 à 13:19
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 avec register_globals et Magic Quote cependant fini la compatilité ascendante. Cependant, pour Safe Mode on pourrait croire que ça ne va pas contribuer au développement de PHP6 chez les hébergeurs qui utilisent souvent le Safe Mode avece l'option open_basedir, et bien l'option open_basedir sera garder!
De la même manière les register_long_arrays, HTTP_*_VARS vont ê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 toutes les "non-PDO" DataBases (mysql,mysqli etc...) et Ereg. Et par ailleurs, d'autres vont être intégrées comme XMLReader et XMLWriter et FileInfo.
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 :
1. <?php
2. for ($i = 0; $i < 9; $i++)
3. {
4. if (true) {
5. break blah;
6. }
7. echo "not shown";
8. blah:
9. echo "iteration $in";
10. }
11. ?>
ifsetor()
C'est carément bien ce nouvel opérateur :
1. <?php
2. /* SI $plop est setter, alors $foo recevra $plop,
3. sinon 42 lui sera assigné . */
4. $foo = ifsetor($plop, 42);
5. ?>
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 :
1. <?php
2. $a = array(array(1, 2), array(3, 4));
3. foreach( $a as $k => list($a, $b)) {
4. }
5. ?>
{} vs []
Pour vous simplifier tout, les {} seront dépréciés au profit des [], on pourra faire notamment :
1. Pour les strings et les arrays, [] marchera âvec substr()/array_slice() :
2. * [2,3] =elements (or characters) 2, 3, 4
3. * [2,] = elements (or characters) 2 jusqu'à la fin
4. * [,2]= elements (or characters) 0, 1, 2
5. * [,-2] = du début jusqu'au dernier moins deux valable pour un array/string
6. * [-3,2] pareil que pour substr etarray_slice()
7. On pourra faire par exemple :
8. * $str = "foo"; $str[] = "d"; concaténation
9. * $str = "fo"; $str[] = "od"; => "food"
10. * $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 PHP6
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
1. <?php
2. function error_handler($errorType, $message)
3. {
4. if ($errorType == E_NOTICE) {
5. throw new Exception( $message, $errorType);
6. }
7. }
8.
9. set_error_handler('error_handler');
10.
11. // Throws a notice
12. echo $new;
13. ?>
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 sa sortie...