juillet
2009
Dès la sortie de PHP5.3, un nouveau débat (nouveau … pourtant vieux de plusieurs années déja) a ressurgi sur les mailing-lists internes.
A quand le typage complet des arguments de méthode ?
Actuellement, il n’est possible de typer qu’un objet d’une classe, ou encore un « array », on a donc ridiculement un typage incomplet, que les afiçionados d’autres langages ne manquent pas de nous renvoyer en pleine tête
Ilia Alshanetsky possédait un patch pour 5.2 rajoutant un support à la fois complet et souple, il l’a porté sur 5.3 et le remet donc sur la table au sein du PHP Group. Vous pouvez lire son billet blog ici
Vous pouvez suivre des fils de discussion par exemple ici, sur les @internals.
Sinon, il existe encore une page très intéressante sur le wiki de PHP, proposant un support total du typage des fonctions : non seulement tous ces arguments peuvent être typés, mais aussi sa valeur de retour.
Enfin une bonne idée ! Mais malheureusement pas encore dans PHP, en effet le PHPGroup n’est pas d’accord avec lui-même. Certains pensent que PHP devrait évoluer vers un tel typage (qui pour rappel resterait entièrement facultatif comme l’est le typage actuel) , d’autres pensent qu’au contraire typer strictement une fonction enlèverait de la souplesse à PHP dans la mesure où si une méthode type sur un entier, lui passer « 1 » mènerait à une erreur alors que par transtypage cela est valide.
Ce que j’en pense moi ? J’aime l’idée d’Ilia : un typage souple et efficace, à l’image de PHP, mais s’il vous plait : vite vite vite !
PHP a vraiment mûri ces dernières années, et avec l’avènement des frameworks qui apportent un cadre strict à PHP, une telle fonctionnalité serait vraiment la bienvenue !
Peut-être pour PHP 5.4 ?
4 Commentaires + Ajouter un commentaire
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007
Ilia a posté un nouveau billet sur son blog annonçant un nouveau patch amélioré. J’adhère complètement.
Et si cela nous conduisait vers la surcharge de fonctions ? C’est un sujet délicat qui a toujours été rejeté. Sans un support pour le type hinting tel que celui proposé par Ilia, ça se comprend tout à fait. Mais à l’avenir ? Ca serait fantastique! Cette possibilité serait de loin celle qui me manque le plus.
alors il faudrait un autre exemple… parce qu’on pouvait faire ça:
public function add_product(array $product_to_insert) {
….
}
Salut Julien et merci pour avoir encore fait un article intéressant.
Concernant le typage des arguments d’une fonction, je pense également que c’est nécessaire. Certe PHP est souple, et ce point lui enlève un petit peu de souplesse, mais d’un autre coté, tu dois pouvoir maitriser ce que ta fonction reçoit en paramètre.
Ca évite également de se lancer dans de la programmation défensive avec des codes du genre :
public function add_product($product_to_insert) {
if (!is_array ( $product_to_insert )) {
$this->log_error ( « Incorrect param in method « .__METHOD__ );
return false;
}
….
}
A+
Seb
Il y a un bon moment, un contributeur de php.net avait posté une bidouille pour ajouter le type hinting des scalaires dans PHP sans aucun patch. La voici reprise: http://www.desfrenes.com/blog/post/php5-et-type-hinting
Après un peu de pratique avec cette classe, je ne suis pas certain que le typage des scalaires soit une vraie bonne idée.