IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

La programmation orientée objet en PHP [Tutoriel]


Sujet :

Langage PHP

  1. #1
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut La programmation orientée objet en PHP
    La programmation orientée objet est une technique adaptée en premier lieu par les développeurs de jeux vidéos et ensuite reprise par les développeurs traditionnels applicatifs et web qui utilisent des langages tels que PHP, JSP et ASP.NET. Les programmeurs procéduraux ont trouvé le passage vers la programmation orientée objet tel un challenge dans leur carrière car cela change totalement la manière de penser ses données, et les opérations que le programme réalise.
    Lire la suite
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Achtung !

    Il y a un <br /> parasite dans le lien.
    Pourfendeur de singletons en croisade

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Citation Envoyé par Petibidon Voir le message
    Achtung !

    Il y a un <br /> parasite dans le lien.
    Forum endiablé

    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Merci pour cet article
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 109
    Points
    109
    Par défaut
    Je suis un peu perplexe face à la fonction "AjouterAnimal" qui ajoute l'animal passé en paramètre à la fin du tableau s'il hérite d'Animal, puis qui l'ajoute une nouvellle fois dans le tableau, indexé par son nom de classe, qu'il soit un Animal ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function AjouterAnimal($animal)
    {
        if(is_subclass_of($animal, "Animal"))
        {
            $_animaux[] = $animal;
        }
     
        $this->_animaux[get_class($animal)] = $animal;
    }
    Dans la section "Code complet", cette fonction devient "AjouterAnimaux" (c'est pourtant AjouterAnimal qui est appelé par la suite), alors que manifestment on s'attend à ne recevoir qu'un objet. Plus surprenant, cette fonction rend une exception si l'objet hérite d'Animal. Enfin l'objet, qui ne peut donc pas être un Animal est ajouté au tableau _animaux, à l'index désigné par son nom de classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function AjouterAnimaux($animal)
        {
            if(is_subclass_of($animal, "Animal"))
            {
                throw new Exception("$animal n'est pas un objet Animal.");
            }
     
            $this->_animaux[get_class($animal)] = $animal;
        }
    Bon il y a peut-être un truc qui m'échappe.

    J'en profite pour dire que dans le tutoriel précédent "Créer une classe en PHP", j'aurais changé le nom du champs "_assis" par "_support" ou "_assise". Je garde en général les adjectifs et participes pour des états booléens.

    Sinon j'adore vos tutoriels!;-)

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Merci pour ces remarques, en effet l'auteur avait fait la boulette concernant la double persistance de l'objet et la mauvaise vérification, j'ai fais la modif dans mon article et j'en toucherais un mot a notre ami.

    Concernant AjouterAnimal / AjouterAnimaux, la boulette vient de moi, mea culpa
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand vous serez confortable
    Quand vous serez à l'aise ?

    En tout cas merci pour cette article, je vais peut être enfin comprendre le vrai interêt de la POO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Quand vous serez à l'aise ?
    Quand j'aurai eu un peu de thé
    C'est modifié,
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut RideKick .

    Je viens de tester le code final de ton sujet (traduction) sur l'initiation à la POO en PHP.
    Juste un détail dans la classe Zoo au niveau de la méthode AjouterAnimal t'as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function AjouterAnimal($animal)
        {
            if(!is_subclass_of($animal, "Animal"))
            {
                throw new Exception("$animal n'est pas un objet Animal.");
            }
     
            $this->_animaux[get_class($animal)] = $animal;
        }
    Ton code testé en l'état retourne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Catchable fatal error: Object of class Animal could not be converted to string in ...
    En remplaçant le code concernant l'exception c'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw new Exception("$animal n'est pas un objet Animal.");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw new Exception("\$animal n'est pas un objet Animal.");
    on corrige l'erreur.

    http://php.net/manual/fr/function.is-subclass-of.php

    Merci pour la traduction.

  10. #10
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Bonjour Diambar,
    Effectivement j n'avais aps vu cette erreur, quoi qu'il en soit il ets préférable de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new Exception(get_class($animal)." n'est pas un objet Animal.");
    car sinon tu aura à chaque fois $animal plutôt que la classe en question.

    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Points : 103
    Points
    103
    Par défaut
    Merci bien pour ce tutoriel!
    Désormais il me tarde d'accomplir de grande choses en PHP

    Cet exemple "zoologique" sera parfaitement transposable à une liste de salariés que je souhaite manipuler

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Elles sont un peu bizarres les classes, y'a du mélange de PHP4 et de PHP5.

  13. #13
    Membre expérimenté Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 109
    Points : 1 608
    Points
    1 608
    Par défaut
    Maintenant nous avons une méthode pour extraire nos animaux de notre zoo. Si l'on appelle notre méthode publique Animaux() depuis une instance de $zoo,

Discussions similaires

  1. Réponses: 160
    Dernier message: 18/07/2012, 22h39
  2. [MySQL] Programmation orienté objet en php 5
    Par dhbmedanis dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2011, 11h06
  3. Programmation orientée objet en PHP
    Par dekalima dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2011, 13h45
  4. Réponses: 26
    Dernier message: 12/10/2010, 07h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo