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 :

[POO] ma 1ère classe PHP :=)


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut [POO] ma 1ère classe PHP :=)
    Je n’arrive pas a exécuter ce code la, une erreur de type
    Erreur de débogage: C:\wamp\www\zende teste\classeteste.php ligne 17 - Call to undefined function demarer()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <html>
    <body>
    <?php
    ECHO " c'est un teste n'est pas peur";
    class Voiture {
    	public $codeVoiture ;
    	public  $marqueVoiture;
    	public function demarer($klo)
    	{
    		this>$marqueVoiture=$klo;
    	}
    	public function afficher()
    	{
    		echo " ma marque est une $marqueVoiture";
    	}
    				}
    	demarer("mercedece");
    	afficher();
     
    ?>
    NB: Mon environnement de travail c’est zend, avec Appch http Server, est ce que c’est obliger de enregistrer les fichiers php dans un chemin spécifique comme en WAMP c'est-à-dire dans le dossier WWW ;?

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut Constructeur
    Salut!

    Je te conseille dans ton cas d'utiliser un constructeur. Il y a plusieurs petits problèmes dans ton code, ici un exemple de ce que j'aurais fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <html>
    <body>
    <?php
    /* Généralement, j'essaie de créer un fichier du type voiture.class.php et de n'y mettre le code d'une seule classe et par la suite inclure ce fichier dans mes autres pour utiliser l'objet, une question de méthodologie! */
    ECHO " c'est un teste n'est pas peur";
    class Voiture {
    	public $codeVoiture ;
    	public  $marqueVoiture;
            /* Un constructeur est une méthode qui est exécuté quand tu instancies ton objet */
            public function __construct($klo)
            {
                   /* Le signe $ va avant this, pas avant la variable */
                   $this->marqueVoiture = $klow;
            }
    	public function afficher()
    	{
                   /* Tu dois toujours utiliser $this pour accéder a un membre d'une classe */
    		echo " ma marque est une $this->marqueVoiture";
    	}
          }
     
          // Instanciation de la voiture
          $objVoiture = new Voiture("mercedece");
     
          // Appeler la méthode afficher
          $objVoiture->afficher();
    ?>

  3. #3
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Merci ; mais concernant le constructeur .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __construct($klo)
            {
                   /* Le signe $ va avant this, pas avant la variable */
                   $this->marqueVoiture = $klow;
    normalement dois prend, le même nom de la classe ; le cas de java

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par amazircool
    Je n’arrive pas a exécuter ce code la, une erreur de type
    Erreur de débogage: C:\wamp\www\zende teste\classeteste.php ligne 17 - Call to undefined function demarer()
    C'est normal : pour qu'une classe appelle l'une de ses méthodes, faut passer par $this : $this->demarer().

    Sinon, démarrer en français, c'est avec 2 r.

  5. #5
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    Citation Envoyé par amazircool
    Merci ; mais concernant le constructeur [...] normalement dois prend, le même nom de la classe ; le cas de java
    en php4, oui, en php5, non, le code de couellet est tout à fait correct
    Dia [ Page DVP ] [ Site pro ]

  6. #6
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Citation Envoyé par Dia_FR
    en php4, oui, en php5, non, le code de couellet est tout à fait correct
    Merci, comment je peu savoir sur quelle version je travaile?
    Citation Envoyé par _Mac_
    Sinon, démarrer en français, c'est avec 2 r.
    Pour vous informer demarer c’es inclus dans le code dans sa pose pas un problème

  7. #7
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    Citation Envoyé par amazircool
    Merci, comment je peu savoir sur quelle version je travaile?
    mettre sur le serveur un fichier php contenant <?php phpinfo(); ?> et afficher la page
    Dia [ Page DVP ] [ Site pro ]

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par amazircool
    Merci, comment je peu savoir sur quelle version je travaile?
    Tu crées un script php qui contient ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    phpinfo();
    ?>
    Quand tu affiches la page ca te donne plein d'infos sur ta configuration et le premier titre en gros te donne ta version de php.

    Citation Envoyé par amazircool
    Pour vous informer demarer c’es inclus dans le code dans sa pose pas un problème
    Non ca ne pose pas de problèmes graves c'est vrai. C'est juste une bonne chose de ne pas faire de fautes d'orthographe, tant dans les posts que dans les commentaires et dans les noms des fonctions. Si quelqu'un d'autre utilise/relis ton code il peut avoir beaucoup de mal à utiliser tes fonctions si tu fais des fautes (rechercher une fonction qui sert a démarrer si tu l'as appelée démarer, tu es obligé de lire toutes les méthodes).
    Ca semble anodin, mais que tu utilises la librairie de quelqu'un d'autre et qu'il y a des erreurs dans le nom de la fonction tu peux y passer un certain temps à trouver la fonctionnalité voulue.

  9. #9
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    ok merci pour tous :=)

  10. #10
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Voila ma propre syntaxe, le débogueur zend n’affiche aucune erreur, mais le message de la fonction affiche ne récupère pas les deux valeurs (nom de la voiture et leur km)
    Il affiche seulement le message suivant
    merci
    le nom de la voiture est leur km est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <html>
    <title>
    </title>
    <body>
    <?php
     
    class Voiture{
    	// les attributs
    	public $nomVoiture;
    	public $kmEffectuer;
    	// constructeur
    	public function Voiture($nomVoiture,$kmEffectuer)
    	{
    		$this.$nomVoiture=$nomVoiture;
    		$this.$kmEffectuer=$kmEffectuer;
    	}
    	public function modifer(string $nomVoiture,string $kmEffectuer)
    	{
    		$this.$nomVoiture=$nomVoiture;
    		$this.$kmEffectuer=$kmEffectuer;
    	}
    	public function afficher()
    	{
    		echo " le nom de la voiture est $this->nomVoiture leur km est $this->kmEffectuer";
    	}
    	// instantion de la classe
    }
     	$objVoiture = new Voiture("mercedece","25000");
    	$objVoiture->afficher();
     
    ?>
    </body>
    </html>
    Petite remarque je ne vois pas ici comment php distinguer entre une fonction normale (méthode en java) (comportement en uml) et un constructeur car les deux prendre le même syntaxe.
    +++++++
    Vous n’avez pas encore réponde a ma question, j’ai habituer de travaillé avec WAMP c'est-à-dire c’est obligatoire de enregistré les fichiers dans le répertoire www, mais concernant http://httpd.apache.org/docs/ ou’ je devrai enregistrer mes fichiers ?
    Merci.

  11. #11
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    c'est $this-> et pas $this.

    pour la distinction... ben comme déjà dit, le constructeur, suivant ta version de PHP, a pour nom celui de la classe ou __construct
    ça paraît suffisant pour faire la différence non ? 'fin j'ai pas compris exactement sur quel point ta question portait alors c'est ptete pas la réponse attendue

    pour la dernière question, pareil, pas bien compris
    avec Apache tu peux mettre tes fichiers où tu veux, suffit d'indiquer dans le fichier de conf où est la racine du serveur
    de base c'est dans htdocs
    Dia [ Page DVP ] [ Site pro ]

  12. #12
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    pardon Dia_FR pour le retarde :=)
    Ok je vais te expliquer normalement en java pour déclarer un constructeur d’une classe Voiture c’est :
    Public Voiture (type variable1 variable1, type variable2 variable 2)
    {
    //initialisation
    }
    par contre une méthode en java c’est
    public void afficher()
    {
    // Traitement
    }
    Alors en aperçoit que ici on peu distingue facilement entre les deux (constructeur et méthode) ,il n y a pas une visibilité dans un constructeur (la public je vais dire).
    Par contre en php je ne sais pas comment le compilateur ou bien l’interpréteur :=) fais distingue entre les deux parce que je vois que ils sont la même syntaxique.
    Pour la dernière question je vais reformuler la question d’une façon un peu bête mais claire :=)
    Si j’ai enregistré mes fichiers dans le répertoire « mes documents »que je vais faire pour configurer mon serveur apache d’une façon stable ?
    merci

  13. #13
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Salut Dia_FR je suis-je ne sais pas ou’ devine se problème la, je n’arrive pas a récupérer mes attributs de la classe voiture voila un vision générale de mon écran
    Behh c’est vraiment ennuyer

  14. #14
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    bonjour
    WE de l'ascension avec pont, ça explique que j'ai pas répondu (repooooos)

    Citation Envoyé par Dia_FR
    c'est $this-> et pas $this.
    j'ai pas été assez précis dans ma réponse, c'est $this->attribut et pas $this->$attribut

    pour la différence méthode / constructeur au niveau du compilateur, je sais pas comment est il fait donc je peux que supposer mais quand l'analyseur syntaxique parcourt le code, il lui suffit de connaître le nom de la classe en cours (facile ça), et après, pour chaque méthode (facile aussi de repérer ça), il regarde son nom
    si c'est "__construct" ou le même nom que la classe, c'est un constructeur, sinon, c'est une méthode
    c'est qu'une supposition mais je vois pas trop où ça te gène

    surtout qu'en Java, c'est pas la visibilité qui différencie constructeur et méthode
    en Java, un constructeur a forcément le nom de la classe et on ne précise pas son type de retour car c'est forcément "void"

    pour les fichiers et Apache, c'est pas terrible de les mettre dans "Mes documents" mais bon, pourquoi pas, ça doit bien pouvoir marcher
    il faut préciser dans httpd.conf que ce dossier est la racine de ton serveur
    indique là pour DocumentRoot et pour un <Directory un peu plus bas
    regarde les tutos pour configurer Apache sinon
    Dia [ Page DVP ] [ Site pro ]

  15. #15
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    merci frère , je vais essai,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Ajax et Classes PHP
    Par Baillezon dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2008, 12h15
  2. [POO] Organisation des classes PHP
    Par AsQuel dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2007, 09h09
  3. [POO] Requête avec classe PHP
    Par krfa1 dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2007, 18h45
  4. Réponses: 1
    Dernier message: 29/10/2006, 05h04
  5. [POO] Question class php=>javascript
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 15h10

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