Journal Le concept d'objet en PHP

Posté par .
Tags : aucun
7
5
jan.
2009
Cher journal,
on me demande parfois de résumer comment PHP utilise les objets et ce qu'il est possible de faire avec, et j'ai parfois du mal à être à la fois clair et exhaustif...

J'ai trouvé ça aujourd'hui :
http://www.unixgarden.com/index.php/web/le-nouveau-modele-ob(...)
et c'est clair et exhaustif... quoique la typo soit un peu bizarre...

L'article est très intéressant car il parle de :

* Classes, objets, héritage et polymorphisme
* Sérialisation et désérialisation
* nouveautés objets de PHP5 constructeurs et destructeurs
* Visibilité
* Statiques et constantes
* Classe abstraite et méthode abstraite
* Interfaces
* Itération
* Final
* Clonage et comparaison d'objets
* Exception
* Quand PHP rencontre Java

Cet article a par ailleurs été publié dans le hors série N°20 de Linux Magazine
  • # Polymorphisme

    Posté par . Évalué à 1.

    Euh, je ne suis pas expert, alors je me trompe peut être, mais je lis:

    Le polymorphisme est le fait de pouvoir utiliser une même méthode sur des objets complètement différents et sans nécessairement connaître de quel type d’objet il s’agit.

    Le principe du polymorphisme n'est pas au contraire de pouvoir écrire plusieurs méthodes portant le même nom dans une même classe, mais acceptant des paramètres différents?
    • [^] # Re: Polymorphisme

      Posté par . Évalué à 10.

      Non, ça c'est la surcharge de méthodes.
    • [^] # Re: Polymorphisme

      Posté par (page perso) . Évalué à -1.

      A vrai dire, sa definition du polymorphisme est exacte, mais pas en PHP (ou java, c++ et toute la clique).

      En c++, cette definition porterait plutot le nom de programmation generique (via les templates), bien que le sous-typage permette aussi cette particularite, mais enleverait tout le benefice d'un code generique (puisque redefinition de la methode pour chaque type, ou alors gros bazar avec des (void *) mais bon, a eviter tant que possible).
      • [^] # Re: Polymorphisme

        Posté par . Évalué à 10.

        La définition est exacte, peu importe le langage...

        Le polymorphisme, dans sa définition la plus courante en tout cas, consiste simplement à spécialiser un type en sous-types, ce qui implique des caractéristiques communes entre les sous-types.

        Concrètement, cela permet d'appeler l'action "démarrer" sur toute une collection de voitures, peu importe que ce soit des 4x4, des monospaces ou des berlines. D'où la généricité du code produit par la suite.
        • [^] # Re: Polymorphisme

          Posté par . Évalué à 1.

          N'est-ce pas aussi appelé polymorphisme ad-hoc ?
          • [^] # Re: Polymorphisme

            Posté par . Évalué à 6.

            Moi je l'appelle Poly, mais en même temps on est intimes...
          • [^] # Re: Polymorphisme

            Posté par (page perso) . Évalué à 1.

            La définition de Feeks correspond bien à la définition du polymorphisme ad-hoc qu'on retrouve dans la majorité des langages. Il existe aussi le polymorphisme paramétrique qui consiste à écrire des méthodes sans se soucier du type des opérandes (ce qu'on appelle généricité en C++ par exemple). Quand à la définition de l'auteur original, elle n'est pas très claire :).
  • # Hum...

    Posté par (page perso) . Évalué à -4.

    PHP et objet dans une même phrase, et on est même pas vendredi quoi !!
    • [^] # Re: Hum...

      Posté par . Évalué à 1.

      Parce qu'après lecture de l'article, si on était vendredi, qu'est-ce que tu reprocherais de précis et concret à PHP, en termes orienté objet ?
      • [^] # Re: Hum...

        Posté par . Évalué à 6.

        * La non-gestion de la surcharge des méthodes et constructeurs (obligé de se farcir ça avec des "if / switch") ;
        * Le (très) faible typage des méthodes (seulement les types complexes sont acceptés, pas les types simples).
        * L'absence de typage pour le retour des méthodes.
        • [^] # Re: Hum...

          Posté par . Évalué à 4.

          le typage des méthodes seulement pour les types complexes est effectivement une plaie.
        • [^] # Re: Hum...

          Posté par . Évalué à 5.

          * l'impossibilité de spécifier quels types d'exception une méthode est susceptible d'envoyer

          j'adore la surprise du chef : "ha tiens, on peut se ramasser cette exception avec cette méthode?"
        • [^] # Re: Hum...

          Posté par . Évalué à -1.

          Je ne vois pas le rapport avec l'objet. On peut avoir de la surcharge de fonction, le typage de fonction sans avoir d'objet.

          Étienne.
          • [^] # Re: Hum...

            Posté par . Évalué à 4.

            Je n'ai pas dit le contraire ! Mais en l'occurrence, je répondais au commentaire précédent, en citant des cas concrets qui m'ont bien souvent emmerdé, et qui concerne le modèle objet de PHP5.
            D'ailleurs, le fait que les possiblités que je cite n'existent pas dans le modèle objet sous-entendent aussi qu'elles n'existent pas plus dans le modèle procédural... Car les implémenter dans le second cas mais pas dans le premier serait fort surprenant !
      • [^] # Re: Hum...

        Posté par . Évalué à 1.

        La non levée d'exceptions par les librairies MySQL !
        Il faut encore se taper des tests sur le retour des fonctions, j'aime bien PHP mais là c'est la honte.
        • [^] # Re: Hum...

          Posté par . Évalué à 2.

          ça c 'est vrai que j'ai du mal à comprendre... Certaines fonctions retournent false, d'autres lèvent des notices, d'autres des warnings...

          C'est vrai que si d'un coup MySQL se mettait à lever des E_STRICT à chaque erreur, de nombreux sites codés avec les pieds poseraient des problèmes de compatibilité...
          C'est ce qu'ils auraient dû faire dès le début.
          • [^] # Re: MySQL & Exceptions

            Posté par (page perso) . Évalué à 2.

            Je ne veux pas faire le rabat-joie, mais c'est justement à cela que sert la classe PDO de PHP, qui permet, non seulement de faire (dans la plupart des cas et si bien développé) une relative abstraction du sgbd sous-jacent, mais qui, Ô miracle, lève une exception en cas d'erreur :)

            Je préfère de loin cela à une modification de l'API de php qui rendrait incompatible 99% des applis un peu vieillottes ;)
            • [^] # Re: MySQL & Exceptions

              Posté par . Évalué à 3.

              s/qui rendrait incompatible 99% des applis un peu vieillottes/obligerait les pisseurs de code PHP à développer correctement/
  • # qq années de retard ...

    Posté par (page perso) . Évalué à 6.

    ce qui me chiffonne c'est que PHP4 n'est plus supporté depuis 1 an, PHP 5.0.0 est sorti il y a presque 5 ans ( juillet 2004 ), et PHP 6 pointe doucement son nez ...

    Yet Another PHP5 Tutorial, pourquoi pas sur le web mais sortir ca en presse avec le mot "nouveauté" dans la table des matières décrédibilisera le magazine plus qu'autre chose.

    cet article aurait été largement plus interessant si il comparait la couche objet de PHP6 ( dispo dans le CVS ) avec celle de la derniere release de PHP5.
    • [^] # Re: qq années de retard ...

      Posté par . Évalué à 2.

      totalement d'accord avec toi, sur tous les points, mais je pense que l'article avait été écrit plus tôt mais publié seulement aujourd'hui...

      Je pense aussi que pas mal de "novices" utilisent le "style" d'objets de php4 même en php5 car ils ne comprennent pas ce qu'est un objet et/ou que ça leur semble plus simple... donc avant de comparer le modèle php5 et avec celui de php6, encore faut-il avoir une vision claire du modèle php5... ce que permet cet article.

      Je pense enfin à ceux qui n'ont pas fait de php depuis php3/4 et qui sont restés avec l'idée reçue qu'on ne peux pas faire de programmation orientée objet de manière correcte en php.

      Voilà pourquoi j'ai signalé cet article dans ce journal... mais en effet, la formulation du titre n'est pas super...
      • [^] # Re: qq années de retard ...

        Posté par . Évalué à 3.

        Je pense aussi que pas mal de "novices" utilisent le "style" d'objets de php4 même en php5 car ils ne comprennent pas ce qu'est un objet et/ou que ça leur semble plus simple... donc avant de comparer le modèle php5 et avec celui de php6, encore faut-il avoir une vision claire du modèle php5... ce que permet cet article.

        Bon on n'est pas non plus sur Clubic :)
        Pour ma part en tous cas, la comparaison PHP5/PHP6 m'aurait intéressé.
        Mais sinon cet article est excellent.
        • [^] # Re: qq années de retard ...

          Posté par . Évalué à 4.

          Bon on n'est pas non plus sur Clubic :)

          Certes, m'enfin je ne compte plus celles et ceux qui tentent d'apprendre par eux mêmes (ou qui sont simplement intéressés) et qui ne comprennent pas grand chose à l'objet... (cf commentaires précédents sur les notions de polymorphisme)¹

          Comme quoi...









          ¹ et c'est normal de ne pas comprendre du premier coup, surtout si on apprend par soi même... rien de dédaigneux dans mes propos
  • # tu devrais demander à Frédéric Lefebvre

    Posté par (page perso) . Évalué à 0.

    de l'UMP

    Il m'a expliqué le Web 2.0, je l'en remercie

    http://www.nowhereelse.fr/frederic-lefebvre-web-2-0-14550/

    If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

    • [^] # place aux experts

      Posté par (page perso) . Évalué à 2.

      Selon le Canard Enchainé, Frédéric Lefebvre va remplacer Besson à l'économie numérique.

      Il a l'air de connaître aussi bien son sujet que le nouveau président de l'Arcep, qui a eu récemment des cours particuliers de télécomms, donnés bénévolement par Lombard, le PDG de France Telecom. Le pauvre vient de l'Ena et ce n'est pas son domaine.

      S'il est bien élevé, il fera un renvoi d'ascenseur, ou au moins, demandera son avis à Lombard avant de prendre une décision.

      If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

      • [^] # Re: place aux experts

        Posté par . Évalué à 3.

        Lefebvre c'est pas exactement le type que je considèrerai le mieux élevé question économie numérique. Pour rappel, c'est le monsieur qui défend avec beaucoup de finesse et de nuances un internet tout plein de libertés :
        http://www.marianne2.fr/Frederic-Lefebvre-violeurs,-drogues,(...)
        • [^] # Re: place aux experts

          Posté par (page perso) . Évalué à 4.

          Lefebvre est aussi un travailleur acharné, il est élu du conseil régional d'Ile de France depuis 2004, et pour les deux dernières années, il a siégé 4 jours. Les comptes-rendus des mêmes séances ne font état d'aucune intervention de sa part. Mais il a bien touché ses 2300 Euros mensuels.

          Source: le dernier Canard

          If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

          • [^] # Re: place aux experts

            Posté par . Évalué à 2.

            Ah mais, mauvaise graine, on ne peut pas être à la fois star de l'internet presque bientôt ministre des nouvelles technologies de communication, parlementaire et maire voyons. Il faut choisir. Déjà, qu'il fasse l'effort de toucher les chèque, ça montre qu'il a du respect pour sa fonction, il se déplace pour ça j'imagine...

Suivre le flux des commentaires

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