Page 1 sur 4

PHP 5.4.*

Posté : 29 juin 2011, 06:33
par Lirio
The PHP development team is proud to announce the first PHP 5.4 alpha release. PHP 5.4 includes new language features and removes several legacy (deprecated) behaviors. Read the NEWS file for a complete list of changes.

THIS IS A DEVELOPMENT PREVIEW - DO NOT USE IT IN PRODUCTION!

This alpha release exists to encourage users to identify bugs, and to ensure that all new features and backward compatibility breaks are evaluated and documented before PHP 5.4.0 is released. Please report findings to the QA mailing list and/or the PHP bug tracker. Windows binaries can be downloaded from the Windows QA site.

Here is an incomplete list of changes:

Added: Traits language construct
Added: Array dereferencing support
Added: DTrace support
Improved: Improved Zend Engine memory usage and performance
Moved: ext/sqlite moved to pecl (sqlite3 support is still built-in)

Please note that some legacy features have been removed:

Removed: break/continue $var syntax
Removed: register_globals, allow_call_time_pass_reference, and register_long_arrays ini options
Removed: session_is_regisitered(), session_registered(), and session_unregister()

This is the first release that adopts the releaseprocess RFC. The next alpha will be released within four weeks. The PHP 5.4 feature set and API has not been finalized.
Enfin un peu de ménage dans les ini et les fonctions. :D
De plus, grosse nouveauté : l'implémentation des Traits (l'héritage horizontal). J'en suis tout ému :mrgreen:

Re: PHP 5.4.*

Posté : 29 juin 2011, 06:37
par Lirio
Pour une petite démo de tout le potentiel des Traits, voici un excellent article sur le sujet : http://www.stefan-marr.de/pages/request ... e-for-php/

Re: PHP 5.4.*

Posté : 29 juin 2011, 07:57
par xTG
C'est bien sympathique cet héritage. :)

Re: PHP 5.4.*

Posté : 30 juin 2011, 22:54
par Cyrano
Très pratique.

Il y avait eu une conférence il n'y a pas très longtemps à La Cantine, à la suite de quoi il y a eu ce billet illustré d'exemples de base. Ça va surtout simplifier pas mal de choses :)

Re: PHP 5.4.*

Posté : 01 juil. 2011, 11:41
par Nagol
je trouve pas ça utile (trait) c'est comme pas mal des choses qui ont été implémentées ces dernières années dans php, les namespace ou les goto aussi ca avait l'air "rigolo" mais au final il ne me semble pas que ça soit réellement utile à moins qu'on ait envie de jouer avec...

Re: PHP 5.4.*

Posté : 01 juil. 2011, 11:58
par Cyrano
<warning troll="inside">
  C'était un trait d'esprit de Nagol
</warning>
:langue:

Ceci dit, c'est dommage que tu n'aies pas assisté à la conférence que j'ai mentionné plus tôt, tu aurais peut-être bien eu une vision plus claire de l'intérêt des traits en PHP.

Lorsqu'on utilise diverses librairies, on peut occasionnellement être appelé à utiliser des méthodes qui sont redondantes dans plusieurs classes. Cette forme d'héritage horizontal va permettre de nettoyer ça et de n'avoir ladite méthode qu'à un seul et unique endroit. Au niveau de la maintenance à long terme, ce sera un gain de temps non négligeable et surtout la suppression d'un risque d'oubli : si en effet on utilise actuellement dans N classes mais qu'on n'effectue la mise à jour que dans N-1 classes, on va avoir à un moment donné un résultat incohérent qu'il sera fort difficile de corriger.

Re: PHP 5.4.*

Posté : 01 juil. 2011, 12:18
par epommate2
je trouve pas ça utile (trait) c'est comme pas mal des choses qui ont été implémentées ces dernières années dans php, les namespace ou les goto aussi ca avait l'air "rigolo" mais au final il ne me semble pas que ça soit réellement utile à moins qu'on ait envie de jouer avec...
ouf... on est donc au moins deux a partager cette opinion :-)

J'ai encore jamais vu d'utilisation vraiment intéressante de ces traits.
Je vois bien à quoi ca peux servir en théorie, mais après on se heurte au principe de réalité : dans un vrai logiciel, je met ca où, ca m'apporte quoi, est-ce que je peux pas faire plus simple ? ....

Re: PHP 5.4.*

Posté : 01 juil. 2011, 12:31
par Cyrano
je met ca où
Où tu veux, c'est une question de convention : où mets-tu tes classes génériques ? Je suis certain que tu utilises certaines conventions ou habitudes de programmation et dans l'architecture des applications que tu construis, il y a un endroit où tu stockes et où tu sais que tu retrouveras tes classes : pour les traits, c'est exactement pareil;
ca m'apporte quoi
As-tu lu ma précédente réponse et/ou suivi les liens proposés par Lirio et moi-même ?
est-ce que je peux pas faire plus simple ? ....
Si tu n'as pas la réponse à ta précédente question, tu n'as peut-être pas bien saisi à quoi servent les traits ni comment ça fonctionne : mais dans ce cas, comment espères-tu pouvoir simplifier quoi que ce soit un sans point de départ ?

Re: PHP 5.4.*

Posté : 01 juil. 2011, 13:36
par Skw33d
je trouve pas ça utile (trait) c'est comme pas mal des choses qui ont été implémentées ces dernières années dans php, les namespace ou les goto aussi ca avait l'air "rigolo" mais au final il ne me semble pas que ça soit réellement utile à moins qu'on ait envie de jouer avec...
Pour les traits je sais pas. Mais pour les namespace, j'ai fait leur découverte récemment et je les utilise dans un projet et je trouve ça très pratique.

Pourquoi ? Réponse ici : php-avance/declaration-des-fonctions-t259381.html

Enfin la c'est un exemple très basique, mais après avoir lu quelques articles comme celui ci : http://blog.pascal-martin.fr/post/php-5 ... es-de-noms
Je trouve qu'il peut tout de même être d'une utilité. Après c'est mon avis... Je suis pas un expert :P

Re: PHP 5.4.*

Posté : 01 juil. 2011, 13:41
par Lirio
je met ca où, ca m'apporte quoi, est-ce que je peux pas faire plus simple ? ....
Prenons un exemple simple : tu disposes de classe PDO, que tu veux modifier pour avoir un singleton.
1ère méthode (the old one)
class MyPDO extend PDO
{
    public static function getInstance()
    {
         // etc ..
    }
}
2ème méthode (the new one)
- Tu créés un trait Singleton que tu utiliseras sur tous tes projets (à mon avis, il apparaitra dans la SPL)
-
class MyPDO extends PDO {
    use Singleton;
}
Difficile de faire plus simple, non ?

Re: PHP 5.4.*

Posté : 01 juil. 2011, 14:15
par devlop78
Lol ... Calmons-nous ... C'est pas encore sorti, et encore moins chez les hébergeurs ... J'ai du quitter le mien parce qu'il n'avait pas PHP 5.3 et que je VOULAIS me mettre aux namespaces PHP. il m'a pas fallu longtemps pour les adopter mais au final je me suis dirigé vers une solution Zend, qui pour le moment n'utilise pas les Namespace ...

Pour revenir au Singleton, une méthode existe déjà (pas optimisée), mais pareil, elle demande Php 5.3 pour son state late building. Par contre, très clairement, une classe abstraite Singleton, dans le cadre où on veut hériter à la fois de Singleton et d'une autre classe, c'est pas tenable. Ce sera donc certainement une très bonne avancé, mais j'attends la mise en production pour m'y intéresser.

Sincèrement, je viens de retoucher un site hier, on me dit aujourd'hui (c'est pas en prod je vois rassure), que il y a un problème à l'affichage ... avec IE 7 ...

Donc, que ça soit HTML 5, CSS 3, PHP ... ou autres, c'est bien beau ces avancées, encore faut-il pouvoir les utiliser ...

Re: PHP 5.4.*

Posté : 01 juil. 2011, 16:23
par epommate2
Calmons-nous
Lol, je suis très calme. Non, sérieusement, le problème c'est que je reprend souvent du code d'autrui et la plupart du temps les bases ne sont pas maitrisés. Donc, allez chercher des techniques de plus en plus complexe ne va faire qu'augmenter l'entropie (le bordel ambiant) pour mon plus grand malheur...

Pour dire la vérité, ca fait très longtemps que j'ai abandonné l'héritage, alors l'héritage horizontale, c'est sur que j'ai un peu de mal ....

Donc, oui, c'est bien qu'il y est de nouvelle technique de programmation existe, c'est également très bien que certain tentent de les utiliser, mais pour ma part, il faut vraiment que ca m'apporte un réel plus et pas seulement un aspect théorique intéressant.

Si je ne faisait que des choses théoriques, il y a longtemps que je ne ferais plus que du LISP, mais bon, je fais des sites web et (pire) je reprend du code de site web. Alors les grandes théorie de la POO c'est un peu secondaire.

Si on regarde bien, on voit que Java a supplanté C++, entre autre, parce qu'il implémentais pas mal de chose en MOINS (friend par exemple, héritage de méthode non virtuel par défaut), ce qui rendait le langage beaucoup plus buvable (bon, c'est moins le cas aujourd'hui). De même C# a enlevé un certain nombre de chose que Java pensait indispensable (comme les exceptions obligatoires).

Alors, maintenant, je me méfie de la toute dernière technique à la mode. Il se peut qu'elle ne passe pas l'hiver :-) Et je regrette aussi que PHP ressemble de plus en plus à Java et commence à permettre de faire des choses très lourdes. Je sais que c'est inéluctable, car tous le monde attend de la nouveauté, mais il viendras un jour ou un langage plus épuré balayera PHP qui n'aura pas su résister à ce type de sirène ...

Re: PHP 5.4.*

Posté : 01 juil. 2011, 16:41
par Nagol
Lol, je suis très calme. Non, sérieusement, le problème c'est que je reprend souvent du code d'autrui et la plupart du temps les bases ne sont pas maitrisés. Donc, allez chercher des techniques de plus en plus complexe ne va faire qu'augmenter l'entropie (le bordel ambiant) pour mon plus grand malheur...
Je suis tout à fait d'accord, demandez à un codeur de créer un système de session sans utiliser les sessions comme on faisait avec php3 (ou avant même je sais plus bien) les gens sauront pas faire...
Pour dire la vérité, ca fait très longtemps que j'ai abandonné l'héritage, alors l'héritage horizontale, c'est sur que j'ai un peu de mal ....
L'héritage simple et l'objet php5 avec les public protected private, les classes statiques, les interfaces, c'est utile et c'est foncièrement bon, par rapport à ce qu'il y avait avant. en terme de "sûreté" de programmation dans des environnements qui nécessite de l'objet (des gros projets quoi) c'est utile.
Donc, oui, c'est bien qu'il y est de nouvelle technique de programmation existe, c'est également très bien que certain tentent de les utiliser, mais pour ma part, il faut vraiment que ca m'apporte un réel plus et pas seulement un aspect théorique intéressant.

Si je ne faisait que des choses théoriques, il y a longtemps que je ne ferais plus que du LISP, mais bon, je fais des sites web et (pire) je reprend du code de site web. Alors les grandes théorie de la POO c'est un peu secondaire.
Je peux comprendre
Si on regarde bien, on voit que Java a supplanté C++, entre autre, parce qu'il implémentais pas mal de chose en MOINS (friend par exemple, héritage de méthode non virtuel par défaut), ce qui rendait le langage beaucoup plus buvable (bon, c'est moins le cas aujourd'hui). De même C# a enlevé un certain nombre de chose que Java pensait indispensable (comme les exceptions obligatoires).
Oui enfin Java n'a pas supplanté C++ ou même C ou même PHP, Java n'est qu'un langage qui se classe second des meilleurs choix dans chaque situation, et pour c# ben c'est Java en moins portable donc même chose...
Alors, maintenant, je me méfie de la toute dernière technique à la mode. Il se peut qu'elle ne passe pas l'hiver :-) Et je regrette aussi que PHP ressemble de plus en plus à Java et commence à permettre de faire des choses très lourdes. Je sais que c'est inéluctable, car tous le monde attend de la nouveauté, mais il viendras un jour ou un langage plus épuré balayera PHP qui n'aura pas su résister à ce type de sirène ...
Voir mon commentaire précédent, mais globallement d'accord.

Re: PHP 5.4.*

Posté : 01 juil. 2011, 16:47
par Cyrano
...Donc, allez chercher des techniques de plus en plus complexe ne va faire qu'augmenter l'entropie (le bordel ambiant) pour mon plus grand malheur...
Tu regarde par le petit bout de la lorgnette à mon avis.
...Pour dire la vérité, ca fait très longtemps que j'ai abandonné l'héritage, alors l'héritage horizontale, c'est sur que j'ai un peu de mal ...
:shock: Ça doit être instructif d'analyser tes packages de classes. Que tu ais réduit l'utilisation de l'héritage dans certains cas au profit de la composition, après tout ça se défend complètement, mais ce n'est pas toujours approprié. Par ailleurs, cet argument ne tient pas pour refuser l'idée même des traits en PHP. Et malheureusement ça signifie aussi que tu n'as pas compris à quoi servent les traits.
...je fais des sites web et (pire) je reprend du code de site web. Alors les grandes théorie de la POO c'est un peu secondaire...
Ôte-moi d'un doute : tu développes des sites web ou tu intègres des CMS tout faits et vaguement bidouillés selon les besoins ponctuels ? Parce que dans ce cas je peux comprendre que ce soit une cause supplémentaire de difficultés de lecture de code : si on intègre ce genre de méthodologies dans un Joomla ou un Wordpress et que tu arrives de moins en moins simplement à les personnaliser, je conçois volontiers que ça te hérisse le poil.
...Et je regrette aussi que PHP ressemble de plus en plus à Java et commence à permettre de faire des choses très lourdes. Je sais que c'est inéluctable, car tous le monde attend de la nouveauté, mais il viendras un jour ou un langage plus épuré balayera PHP qui n'aura pas su résister à ce type de sirène ...
Peut-être précisément parce que tu n'as pas encore accordé à PHP un label « Professionnel ». À l'occasion d'une soirée restau de ViPhP, c'est Cyruss(*) qui nous avait évoqué cet aspect en nous disant (je paraphrase de mémoire) : «faire un site internet, c'est quasiment à la portée du premier couillon venu, mais si on est (ou se veut être) un développeur, il ne faut pas penser « site web » mais application logicielle » et je suis complètement d'accord avec lui. Et si tu te considères comme développeur, ce serait bien d'avoir des arguments de développeur et pas des arguments d'intégrateur pour défendre ton point de vue sur les traits.

(*) Pour info, celui connu comme membre ici comme Cyruss est Cyril Pierre de Geyer, auteur avec Éric Daspet de « PHP 5 avancé » pour ceux qui ne le connaissent pas, je pense qu'on peut lui accorder un certain crédit ;)

Re: PHP 5.4.*

Posté : 01 juil. 2011, 18:27
par epommate2
L'héritage simple et l'objet php5 avec les public protected private, les classes statiques, les interfaces, c'est utile et c'est foncièrement bon, par rapport à ce qu'il y avait avant.
Nous sommes sur la même longueur d'onde. Mais tout n'a pas la même importance et certain élements "apportent" plus de "simplicité" que d'autre.
Interface et private sont indispensables. L'héritage et protected ont un coût non négligeable.

C'est quoi une classe "statique" ???


@Cyrano
Je vais pas commencer à me répandre sur des arguments ad-hominem ou d'autorité :-)
Ça doit être instructif d'analyser tes packages de classes
Mais tout est public : http://source.zenprog.com/
Toutes critiques est la bienvenue. (ce n'est peut être toutefois pas le lieu ...)