Je suis en train de préparer un document détaillé à ce sujet, j'espère pouvoir le sortir dans quelques jours (idéalement, avant la sortie de la version finale) ;)
Version imprimable
Ca c'est top ! Merci Yogui !
Mais bon, si y'a un guide, c'est que sa sent le cadavre.....
5.3, c'est super. Comment ne pas louer tous ses ajouts majeurs ?
Y a juste un BIG probo: la grammaire de php n'est plus assez souple ni même cohérente (oserais-je dire) par rapport aux nouvelles possibilités.
Ce qu'il manque ? Un déréférençage automatique là où ça a du sens. Ca devient une nécessité avec l'arrivée des fonctions anonymes. Ex:
Il m'a semblé lire rapidement dans la mailing list internal de php que les core members ne sont pas très chauds pour autoriser ce genre de pratiques qui sont pourtant monnaie courante dans la plupart des langages aux possibilités similaires.Code:
1
2
3
4
5
6 $curry()(); // error $array[$key](); // error $obj->lambda(); ($obj->lambda)(); {$obj->$lambda}(); // error $obj()(); // (__invoke()) error func()[]; // error
Comme souvent, ça finira par être implémenté... mais trop tard (et oui, $obj->a()->b() ça vous dit quelque chose ?). Pour contourner ces problèmes, les développeurs auront pris l'habitude de passer par des variables temporaires ou des niveaux supplémentaire d'indirection, ce qui ne manquera pas d'apporter de l'eau au moulin du camp des pourfendeurs de php.
@metagoto : Je ne comprends pas ton code, pourquoi mets-tu ()() ? Est-ce que tu ne parles pas plutôt de ()[] ?
Le cas d'une fonction qui retourne une fonction.
Un exemple trivial:
Et il est vrai que ()[] n'est pas non plus autorisé alors que ()-> l'est. Les fonctions anonymes étant des objets Closure en interne il n'est plus logique d'interdire ()().Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 $f = function($a) { return function($b) use ($a) { return $a + $b; }; }; //echo $f(2)(3); $g = $f(2); echo $g(3); $a = new \stdClass; $a->f = function() { return 'f'; }; // comment caller $a->f directement?
En même temps, cela deviendrait parfaitement illisible :aie:
C'est ok pour du prototypage mais, pour le reste, on peut déjà faire ce qu'on veut avec la SPL non ?
Ce qui me paraît illisible c'est justement ce que l'on doit rajouter "à contre coeur" pour arriver à nos fin et contourner ces dites limitations.
Ca ne choque plus personne de nos jour de déclarer et caller sur place une fonction en javascript par exemple. C'est fort utile: (function(){..})();
Maintenant que les features sont là, il ne manque plus qu'à mettre la grammaire de php en accord avec celles-ci.
JavaScript permet de faire de belles choses, mais le code d'une application JS est souvent qualifiable d'illisible à mon avis...
L'un des problèmes de ce que tu proposes est que le code suivant serait syntaxiquement permis :
:aie:Code:ma_fonction()()()()()[6]()[2]->appel()[1];
Si ce code a du sens, pourquoi pas ? :ccool:
C'est juste une question de cohérence, les développeurs étant libre d'implémenter leurs trucs comme ils le veulent! Dans un tel cas, ce développeur me paraîtrait bien sur de lui :mrgreen:
Voici ce que l'on devrait faire actuellement pour arriver à la même chose:
Quitte à avoir le choix, je préfère me passer des 8 variables temporaires et dérouler le code dans un pur style à la C, ce dont est issu php! Je me répète, les features sont là, il faut juste être cohérent maintenant, ce qui n'a rien à voir avec l'offuscation ou même "l'ésotérisme" que l'on peut apporter aux codesCode:
1
2
3
4
5
6
7
8
9 $tmp1 = ma_fonction(); $tmp2 = $tmp1(); $tmp3 = $tmp2(); $tmp4 = $tmp3(); $tmp5 = $tmp4(); $tmp6 = $tmp5[6]; $tmp7 = $tmp6(); $tmp8 = $tmp7[2]->appel(); /*$result = */$tmp8[1];
Je te taquinais, moi aussi j'aimerais mieux que le langage laisse l'opportunité de faire des choses meme si ça peut devenir laid... À chacun sa responsabilité ;)
Au fait, Johannes annonçait il y a quelques heures que PHP 5.3 est réellement prévu pour mardi, cette fois c'est la bonne :
Et Pierre de répondre au sujet de la compilation des exe/dlls :Citation:
Alright,
I mentioned it in the last mails a bit in different ways so to make it
clear:
I'm aiming at re-tagging and packaging 5.3.0 to get these things in:
- Andrei's calloc fix
- Rasmus's/Ilia's curl fix
- Improvements to the UPGRADING file (everybody)
If possible (and I think it is) I'd like to keep Tuesday as target
release date. Pierre told me he'd be available Monday evening (German
time) to prepare the Windows builds, I would like some time to verify
the packages (did I re-tag correctly? did I package correct? ... Did I
commit it to phpweb correctly as binary file? ...) so I think packaging
on Sunday would be better, while that means some people spend weekend
time on this, but I hope that's ok :-)
Thanks everybody,
johannes
:fleche: Les builds pour Windows seront faits aujourd'hui (dimanche), puis testés par Pierre et ses collègues jusqu'à lundi soir. Si vous repérez un bug dans ce temps, faites-vous connaître ;)Citation:
To be more precise, I would like to provide the releases (src, bins
and installer) today so more people can test them. On Monday we will
do some more tests in the office as well, but sadly only in the
morning (US, or evening for the european :).
About the curl patch, it builds fine and seems to work well on linux
(ubuntu) and windows, using curl 7.19.4/5 and 7.18.2. Any objection if
I commit it already? Same for Andrei's patch.
Cheers,
Pour information, PHP 5.3.1 est prévue pour dans un ou deux mois.
Oui oui! Je suis aussi la discussion sur la mailing list. On n'a jamais été aussi proche d'une release, enfin :ccool:
Le voici : http://www.developpez.net/forums/d77...ume-rossolini/
Il s'agit de la traduction d'un article d'IBM Developer Works par John Mertic, il explique en détail les nouveautés de PHP 5.3 et il se termine par un guide de migration depuis PHP 5.2 :D
Salut
Dans la mesure où tu fais des appels statiques, as-tu essayé avec __callStatic() ?
Non, ce n'est pas B qui répond, c'est bien Base, comme attendu. __call() n'est pas une méthode statique alors get_called_class() est la même chose que get_class($this) dans ce contexte. $this est bien tu type B dans la hierarchie.
En revanche, comme mentionné par Yogui, si tu utilises __callStatic(), dans ce cas là get_called_class() te donnera A
Voici la sortie officielle de PHP 5.3 !
D'autres versions compilées pour Windows sont ici : http://windows.php.net/download/Citation:
Hello!
The PHP Development Team would like to announce the immediate release of PHP 5.3.0. This release is a major improvement in the 5.X series, which includes a large number of new features and bug fixes.
Release Announcement: http://www.php.net/release/5_3_0.php
Downloads: http://php.net/downloads.php#v5.3.0
Changelog: http://www.php.net/ChangeLog-5.php#5.3.0
regards,
Johannes and Lukas
C'est parti pour les espaces de noms ...
une petite question les hebergeurs ne vont pas mettre à jour aujourd'hui en moyenne cela prends plusieurs mois ? semaines ? jours ?
ou ils attendront PHP 6 ?
Les hébergeurs devraient vraisemblablement proposer php 5.3 dans les semaines à venir, du moins ceux qui ont déjà switchés pour php 5! (ils y en a qui sont toujours sur php4 uniquement)
Guide de migration: http://fr3.php.net/migration53 (en anglais)
Il n'y a que très peu d'incompatibilités par rapport à 5.2.x, ça devrait aider.
La dernière version avant 5.3 est la 5.2.10 sortie le 18 juin. Si ton hébergeur est en 5.2.10, c'est plutôt bon signe.
Pour prendre OVH j'espère qu'on pourra préciser la version de PHP5... Effectivement il n'y a pas beaucoup de différence, mais quand il s'agit de debuguer une 30ène de sites webs, avec des librairies (smarty et adodb pour mon cas + les autres librairies utilisées par d'autres personnes avant que j'arrive dans ma boite) ça va être coton coton.
ben normalement tu utilises suphp sur ovh, donc un petit handler configuré sur une extension spécifique et puis zou, non ? Enfin c'est en dédié sa....
<derive>
A ce sujet ==>
Ils en sont ou de http://pecl4win.php.net/ ? Car c'est très embêtant cette situation..Citation:
</derive>