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 :

Classes : question de compréhension


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut Classes : question de compréhension
    Bonjour,

    J'aurais une question sur un bout de code, j'ai trouvé un exemple de class (parlant du déréférencement de méthode) qui est écrite comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class voiture{
    	function cetteVoiture(){
    		return $this;
    	}
    	function avance($distance){
    		echo "on avance de $distance metres";
    	}
    }
    pour l'affichage il est marqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $maVoiture = new voiture();
    $maVoiture->cetteVoiture()->avance(100);
    Je ne vois pas pourquoi le marquer comme ceci alors de la façon suivante cela marquerait la mème chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $maVoiture = new voiture();
    $maVoiture->avance(100);
    Si quelqu'un pouvait m'expliquer la différence

  2. #2
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    l'objectif de différencier les methodes publiques et les méthodes privées.
    C'est à dire que certaines methodes sont utlisées dans la class, et uniquement dans la class. Alors que d'autres sont utlisée dans le script, et uniquement dans le script.

    Aisini, l'objet voiture ne peux pas être utlisé directement dans le script.
    Il faut d'abord le "transformer" en objet public.

    Cela dit, en effet ca fonctionne. Mais c'est plus "propore" de séparrer les deux.

    Gillou

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    D'accord, en fait c'est l'équivalent du "public" et "private" mais pour les méthodes !

    Est ce que cela serait possible que tu me montre un exemple ou l'on est obligé d'utiliser cette technique?

    Merci de ta réponse

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Le code que tu présentes est typique de Php 4. En effet, les attributs de visibilité (public, protected, private) n'existent pas en Php 4. cf. Les classes et les objets (PHP 4).

    Si tu veux une véritable structure Orientée Objet, mieux vaut utiliser Php 5.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Celira Voir le message
    Bonjour

    Le code que tu présentes est typique de Php 4. En effet, les attributs de visibilité (public, protected, private) n'existent pas en Php 4. cf. Les classes et les objets (PHP 4).

    Si tu veux une véritable structure Orientée Objet, mieux vaut utiliser Php 5.

    Pourtant le code cité est tiré du livre PHP5 avancé 3eme édition (Eyrolles), c'est l'exemple en PHP 5, en PHP 4 l'exemple equivalent est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class voiture{
    	function cetteVoiture(){
    		return $this;
    	}
    	function avance($distance){
    		echo "on avance de $distance metres";
    	}
    }
     
    $maVoiture = new voiture();
    $cetteVoiture = $maVoiture->cetteVoiture();
    $cetteVoiture->avance(100);

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    En fait, la notion de visibilité est apparue en PHP5.
    Ca existait avant, mais il n'y avait pas de contrôle PHP. C'est le développeur qui devait être rigoureux.
    Maintenant, tu peux ajouter Public, protected ou private pour imposer cette structure.
    http://fr.php.net/manual/fr/language...visibility.php

    Gillou

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Ok merci pour les liens, je vais étudier cela.

Discussions similaires

  1. [AJAX] Question de compréhension
    Par didirider dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 19/03/2008, 16h52
  2. [Débutant] Question de compréhension
    Par Invité2 dans le forum C++
    Réponses: 4
    Dernier message: 10/02/2008, 20h14
  3. Question de compréhension
    Par cassis2k dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2008, 15h37
  4. [VBA] question de compréhension
    Par dalmasma dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/07/2007, 19h12
  5. [Servlet + Class] question concernant plusieurs connections
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/11/2004, 16h39

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