Présentation de PHP 5

Posté par  . Modéré par Fabien Penso.
Étiquettes : aucune
0
28
mar.
2003
PHP
Sterling Hughes, un des développeur de PHP5, a mis à disposition sur le net une présentation des nouveautés de PHP5. Au menu de cette version, un grand pas vers l'objet avec l'apparition de notions comme les espaces de nommages, les notions d'interfaces/implémentations, les visibilité et la gestion des exceptions.

PS: la présentation originale tourne sur une machine PHP5 pour montrer ses exemples, sauf qu'elle ne tient pas la charge. Le miroir reprend la présentation, mais les exemples n'y fonctionnent pas. Ne soyez donc pas étonnés d'y voir des erreurs PHP de partout. Parmi les nouveautés:

- les espaces de nommages (ou namespace).

- Maintenant les objets sont affectés par références. Ceux qui ont tenté de faire de l'objet en PHP savent que l'opérateur = duplique l'objet (y compris pour la création qu'il fait écrire toto &= new MonObjet ();, et il faut jouer de l'opérateur &= pour affecter une référence. Dans PHP5, tout est référence (comme sont habitués par exemple les développeurs java).

- Les constructeurs et destructeurs ont un nom unifié __construct et __destruct, comme en python.

- La notion de visibilité pour les membres d'une classe (public/private/protected, avec la même signification qu'en C++).

- Introduction de variables et de membres statiques.

- Apparition du mot clef final permettant à une variable de ne pas être redéfinie.

- Possibilité de déclarer des constantes (mot clef const).

- Fonction __clone () sur un objet permettant de le dupliquer facilement.

- Déférencement d'objet automatique (on peut enfin écrire $f->bar()->barbarina();)

- Chargement automatique des classes en utilisant une fonction autoload ( http://talks.php.net/show/php5intro/24 )

- Méthodes spéciales __set, __get et __call (Object overloading & Method Overloading, http://talks.php.net/show/php5intro/24 et http://talks.php.net/show/php5intro/25 )

- Déclaration de classes abstraites

- Possibilité d'utiliser les types pour limiter les arguments de certaines fonctions à certains types (le langage reste uniquement typé dynamiquement).

Et parmi les nouvelles fonctionnalité : une extension mono.

Aller plus loin

  • # Sur l'extension mono

    Posté par  . Évalué à 9.

    Son site est ici : http://www.php.net/~sterling/mono/(...) et son rôle est de permettre l'accès à des assemblies .NET depuis PHP. Ce qui permet d'utiliser des composants .NET dans une page PHP.


    <?php
    Console = new Mono('System.Console');
    $Console->WriteLine('Hello World');
    ?>
    • [^] # Re: Sur l'extension mono

      Posté par  . Évalué à 10.

      C'est quand même marrant, cet investissement de certains acteurs du libre dans une plateforme sur laquelle ils n'auront jamais leur mot à dire. Le monde à l'envers !
      • [^] # Re: Sur l'extension mono

        Posté par  . Évalué à 6.

        C'est vrai que ça peut paraître idiot, mais ce sera probablement une passerelle vers le libre pour de nombreux développeurs et de nombreuses infrastructures. À l'argument «on veut pas de vos pinguoins, on a tout développé en .NET, on peut pas faire marcher arrière !», on pourra gaiement répondre que les pinguoins aussi savent faire du .NET.

        Pour autant, ça me ferait quand même chier de bosser sur Mono, par principe ! ;-)
        • [^] # Re: Sur l'extension mono

          Posté par  (site web personnel) . Évalué à 10.

          C'est vrai que ça peut paraître idiot, mais ce sera probablement une passerelle vers le libre pour de nombreux développeurs et de nombreuses infrastructures.

          On avait dit la meme chose lorsque apple avait décidé de passer a un unix pour son os, résultat: pas le moindre portage dans le sens plateforme proprio -> pateforme libre
  • # Re: Présentation de PHP 5

    Posté par  . Évalué à 5.

    trop fort, sur le lien vers la présentation on a :
    " We're being slashdotted. Uh-oh. :) "

    dont il y a le mirroir comme indiqué mais aussi un pdf au cas ou le mirroir supporterait pas la charge ;)

    mais à quand " We're being linuxfred" ??
  • # Intéressant, mais...

    Posté par  . Évalué à 10.

    Pouvoir faire de l'objet c'est bien, avec des objets c'est mieux, autrement dit: je me demande surtout ce que PHP5 proposera comme lib de classes, et comme façon de "faire des pages"...

    S'ils gardent leur base existante, ce sera pas très objet... s'ils refont un truc "from scratch", ça peut être intéressant par contre... (genre prendre les avantages de java, .NET, zope, etc...).
    • [^] # Re: Intéressant, mais...

      Posté par  . Évalué à 1.

      > genre prendre les avantages de java

      Ça y ressemble, puisqu'on y retrouve déjà au moins les notions d'interfaces... Et effectivement, ça a l'air pas mal différent de l'OOP de la version 4 (vraie encapsulation, constructeurs ET desctructeurs, objets systématiquement par références, etc.)

      Et puis des choses qui pourront s'avérer terribles pour ne pas se casser la tête, comme une fonction appelée dès qu'une classe est utilisée, pour s'assurer que le fichier qui la définit soit parsé, ou des noms de fonctions «dynamiques» (appeler $objet->bouh() et $objet->bah() tombe sur la même fonction en fournissant 'bouh' ou 'bah'...).
      • [^] # Re: Intéressant, mais...

        Posté par  . Évalué à 4.

        Je me suis mal exprimé, niveau langage (syntaxe, sémantique), faudra voir ce que ça donne niveau héritage, surcharge, etc... en bref ce qu'on a pour faire du polymorphisme...

        Mais en fait, je m'interroge non pas sur le langage (il en existe des milliiers, pas de grande révolution dans ces domaines là, et malheureusement les "meilleurs" ne sont pas toujours les plus utilisés), mais sur le framework qui viendra avec... est-ce que l'objet sera juste un "tu écris session.var["test"]; au lieu get_session_var["test"];" ou alors on se retrouvera avec les vrai avantage de l'objet (je fais un système de page, une gestion de cache intégré, j'hérite de ça, donc ma page à directement telle propriétés, je veux crée un forms, j'ajoute non pas du code HTML mais des intances de classes représentant cet HTML, la validation passe par là... etc...
    • [^] # Re: Intéressant, mais...

      Posté par  . Évalué à 10.

      Moi, l'objet je veux bien s'ils ne cassent pas la compatibilité avec le précédent. Je trouve que l'objet c'est pas super adapté pour des petits scripts, que ca rend le code lourd à lire, surtout si c'est pour mettre tout sous forme d'objets. Je ne supporte pas l'ASP, et je n'ai pas envi que php se mette à lui ressembler sur ce point. Voila, juste pour dire que le tout objet ca me semble être plus une mode qu'un vrai progrès pour certaines utilisation. Je suis d'accord que l'objet ca peut être bien pour des gros projets, mais pour des scipts de moins de 100 lignes je n'en vois pas l'interet.
      • [^] # Re: Intéressant, mais...

        Posté par  (site web personnel) . Évalué à 8.

        Je trouve que l'objet c'est pas super adapté pour des petits scripts, que ca rend le code lourd à lire, surtout si c'est pour mettre tout sous forme d'objets.

        C'est clair, je pense à tout ceux qui se font un petit site perso avec qq lignes de php dedans, c'est pas l'idéal si ils doivent tout se retaper pour y passer en objet...
        C'est un peu l'image du marton-pillon pour écraser une mouche.

        De plus, php séduit bcp par sa simplicité d'utilisation (et sa puissance), donc autant espérer que ça garde sa simplicité...
        (tout en augmentant sa puissance, bien sûr !)
      • [^] # Re: Intéressant, mais...

        Posté par  . Évalué à 8.

        Je ne supporte pas l'ASP

        Je ne dirais pas que l'ASP c'est vraiment de l'objet... tu peux créer une classe mais niveau héritage et polymorphisme c'est pas vraiment ça...

        Je suis d'accord que l'objet ca peut être bien pour des gros projets, mais pour des scipts de moins de 100 lignes je n'en vois pas l'interet.

        Si effectivement tu ne fais que des script de 100 lignes isolé, c'est pas intéressant... (quoi que un peu de surcharge, ça peut le faire...) mais dans ce cas, tous les langages se valent, certains préféreront l'un ou l'autre, et c'est normal, mais il ne me semble pas qu'il y'ait d'argument ultime pour l'un ou l'autre... Par contre, et c'est un "problème" de PHP (et d'autres...) dès que t'es avec un gros projet, l'objet aide bcp, ça permet de facilité le travail d'équipe, et de faire quelques choses de généralement plus souple et robuste.

        Pour la compatibilité avec l'existant, c'est toujours un problème, le choix entre ne pas ajouter de fonctionnalité mais rester compatibilité, et casser la compatibilité mais évoluer... je ne connais pas assez la tambouille interne de PHP, mais à priori je ne vois pas de problème à unir les deux: on garde l'existant, on y ajoute une belle série de classe qui vont bien... on arrive à un truc effiace, les nouveaux projets peuvent profiter de l'objet, les anciens continues à tourner, et peuvent même migrer petit à petit... enfin bref... on verra...
        • [^] # Re: Intéressant, mais...

          Posté par  (site web personnel) . Évalué à 5.

          on garde l'existant, on y ajoute une belle série de classe qui vont bien... on arrive à un truc effiace, les nouveaux projets peuvent profiter de l'objet, les anciens continues à tourner, et peuvent même migrer petit à petit... enfin bref... on verra...

          Dans l'idéal, c'est clair que c'est ce qui conviendrait le mieux à tous et pour tous.

          Parce qu'il faut voir le nombre de sites qui utilisent encore du php... 3 ! (c'est plus courant qu'on croit)
          Sans compter l'utilisation de fonctions obsolètes...

          A+
  • # Un lien qui fonctionne ?

    Posté par  (site web personnel) . Évalué à -1.

    La présentation a l'air interressante mais je ne trouve pas un lien qui marche.
    Dans la version PDF c'est tout vide en dessous de "output" et le miroir envoie des parse error ... :|
  • # Re: Présentation de PHP 5

    Posté par  . Évalué à 10.

    Ouahh, çaz commence à ressembler à du C++ et du Java, tout ça, ça peut être intéressant même si, comme c'est dit plus haut, l'OO pour les petits scripts n'est pas adapté...
    Il faudrait voir aussi les perfs quand les scripts sont tout en OO...
    Tout ça pour dire que ces nouveautés sont très intéressantes mais il ne faudrait pas que ce soit au détriment des perfs, de la sécurité et surtout de la simplicité (qui reste la grande force de PHP...).
    Voilà, mais je préfére quand même le Python (ou le Ruby) pour l'OO car ils ont été conçus comme tel dès le départ...
    • [^] # Re: Présentation de PHP 5

      Posté par  . Évalué à 4.

      Certes mais le C++ à la base c'est du C donc çà n'a pas été conçu en tant que langage objet à la base. La surcouche objet est pourtant extrêmement sympathique et le C++ est devenu le langage objet le plus utilisé.

      Tout çà pour dire que même si PHP n'a pas été conçu pour l'objet, si la couche objet est bien implémentée, çà peut être très bien.

      De plus, contrairement à Java où tout est objet, en C++ tu as toujours le choix de développer à la façon C sans les classes, il pourrait en être de même avec PHP.
      • [^] # Re: Présentation de PHP 5

        Posté par  . Évalué à 3.

        Oui c'est vrai, c'est plus ler performances qui m'inquiétent en fait, car PHP est quand même rapide, pourvu que cela reste comme ça...
  • # J'ai installé PHP5 \o/

    Posté par  . Évalué à 10.

    Afin de voir où en est PHP5 et dans un souci de répondre aux diverses questions, j'ai installé PHP5 sur une de mes machines. Installation classique de CVS, a part qu'il faut un libtool 1.4.3 qui n'était pas sur woody par défaut.

    Mon phpinfos : http://rincevent.dyndns.org/phpinfo.php(...)

    1ere chose, les anciens script sont compatible (ou presque). Mes scipts marchent tous, phpsysinfo marche. Même phpmonitor qui est programmé objet fonctionne. Le seul qui me pose problème est phpMyAdmin lorsqu'il execute une requête, mais c'est peut être une particularité de phpMyAdmin mal accepté par PHP5 (je rapelle qu'il n'est même pas encore en alpha). A noter que certains de mes scripts font des requetes (select ou insert) sur mysql sans problèmes.

    La bibliothèque existante pour PHP4 continue de fonctionner. Les fonctions n'ont pas l'air d'avoir changé de ce coté là. Par contre, comme elles ne sont pas objet, c'est un peu lourd de les utiliser dans un script totalement objet à la mode PHP5. Par contre, il semble que les nouvelles bibliothèques soient elles objet. Par exemple pour créer un itérateur avec SPL (pour parcourir un résultat de requête BD) on crée une nouvelle classe implémentant SPL::iterator. A noter que ces bibliothèques ne semblent pas encore être dans le moteur, mais sont disponibles à part.

    Je vous ai également mis quelques exemples de php5 tiré de la présentation ici : http://rincevent.dyndns.org/php5/(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.