PHP 6, des prémices ?
Posté : 08 juin 2009, 13:32
Hey
,
C'est Fabien Potencier qui nous fait un petit résumé de ce qui s'est raconté au PHP|Tek. Il faut donc lire l'article What for PHP6? (très court).
Ce que j'aime.
La méthode __cast, enfin un comportement digne du C. Quand on fait en réalité, on appelle la fonction int ( int ) -> double de C. Normalement, c'est équivalent à mais les compilateurs refusent cette syntaxe. Dans la philosophie C++, les transtypages (les casts) sont des opérateurs. On peut donc les surcharger de cette façon : Ça marche aussi avec des typedef bien sûr … Et bah en PHP, la méthode magique __cast aura ce même effet j'imagine. Elle prendra sûrement en paramètre le type vers lequel on veut convertir notre objet et tadaaaa ! J'espère que __toString va disparaître pour des questions d'uniformités, mais elle risque de rester pour des questions de portabilités
.
On trouvera quelques améliorations sur les tableaux, notamment avec ArrayObject et ArrayAccess.
On aura peut-être le support de l'héritage horizontal, plus connu sous le nom de Trait (voir Traits (ou l'héritage horizontal)).
Et !! des vraies liaisons, comme f()[0] ou f()() etc. Ça manque cruellement …
Et pour finir, des getters/setters à la C# (ça j'aime moins, je préfèrerais le mot-clé const de C …) :
.
C'est Fabien Potencier qui nous fait un petit résumé de ce qui s'est raconté au PHP|Tek. Il faut donc lire l'article What for PHP6? (très court).
Ce que j'aime.
La méthode __cast, enfin un comportement digne du C. Quand on fait
Code : Tout sélectionner
int x = 42;
double y = (double) x;Code : Tout sélectionner
double y = double(x);Code : Tout sélectionner
// Aucun type de retour, même pas void !
MaClasse::operator long ( void ) const {
return 1000 * this->getX();
}Code : Tout sélectionner
typedef unsigned long int ulint;
MaClasse::operator ulint ( void ) const {
return …;
}On trouvera quelques améliorations sur les tableaux, notamment avec ArrayObject et ArrayAccess.
On aura peut-être le support de l'héritage horizontal, plus connu sous le nom de Trait (voir Traits (ou l'héritage horizontal)).
Et !! des vraies liaisons, comme f()[0] ou f()() etc. Ça manque cruellement …
Et pour finir, des getters/setters à la C# (ça j'aime moins, je préfèrerais le mot-clé const de C …) :
class Foo {
public $bar
getter { return $this->bar; }
setter { $this->bar = strtolower($value); }
} Cette façon de procéder serait plus cohérente surtout niveau gestion mémoire et structure