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 :

Des débuts difficiles en php5


Sujet :

Langage PHP

  1. #21
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var $serverName='meuh'; 
      var $userName='erf';
    etc. c'est du PHP4, pas du PHP5. En version 5, qui est la bonne si tu veux faire du développement orienté objets, les modificateurs d'accès private, public etc. sont de mise.

    De toute évidence, le serveur sur lequel se trouve ton code est en PHP4. Si tu veux faire du PHP5, vois avec leur service technique comment migrer ton site vers un serveur capable d'interpréter la bonne version. Il peut aussi s'agir d'un simple paramétrage à faire sur ton compte utilisateur (je ne connais pas free mais chez mon hébergeur, c'est comme ça que ça marche pour basculer d'une version à l'autre).

    Bon courage, mais un dernier conseil : si tu veux t'entrainer au développement PHP, installe plutôt ce qu'il faut sur ta machine (EasyPHP propose un package très facile à gérer, par exemple)

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    On reprend tout je viens de demander à mon admin réseau de travailler en local : je passe donc sur un serveur de mon école (qui est en php5), de plus je suis passé sous Linux.

    Je viens de tester le rajout des private, public etc et c'est pire si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      private var $serverName='meuh'; 
     
    j obtiens :
    Parse error: parse error, unexpected T_VAR, expecting T_VARIABLE in /net/etd3/moncompte/public_html/index.php on line 11
    admettons je me suis trompé de sens, je met donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      var private $serverName='meuh'; 
    j obtiens :
    Parse error: parse error, unexpected T_PRIVATE, expecting T_VARIABLE in /net/etd3/moncompte/public_html/index.php on line 11
    Lequel se fout de la gueule de l'autre ? (PHP ou le serveur)

  3. #23
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    n'existe pas en PHP5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class maClasse {
       private $var_privee;
       protected $var_protegee;
       public $var_publique;
       public __construct() {...}
       private function tagada() {...}
       [etc.]
    }
    étant entendu que l'accesseur "public" est l'accesseur par défaut (donc si tu ne mets rien c'est public).

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    je met private a mes variables qui doivent l'être et..... le plantage :

    Parse error: parse error, unexpected T_VARIABLE in /net/etd3/moncompte/public_html/index.php on line 19
    et le code qui plante :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    <html>
     
    <head>
     
    <title>Exercice 1</title>
     
    </head>
     
    <body>
     
    <?php
     
     
     
    class Connexion{
     
     
     
      //Variables 
     
       private $serverName; 
     
       private $userName; 
     
       private $password; 
     
       private $databaseName;
     
     
     
     
     
      /*Constructor */
     
      public function __construct($serverName, $userName, $password, $databaseName) {
     
        $this->serverName = $serverName; //Ca plante ici !! !!
     
        $this->userName = $userName;
     
        $this->password = $password;
     
        $this->databaseName = $databaseName;
     
     
      }
     
     
     
      /*List of Getters and Setters */
     
      public function public getserverName(){
     
          return $this->serverName;
     
      }
     
     
     
      public function public setserverName($server) {
     
          $this->serverName = $server;
     
      }
     
     
     
      public function public getuserName(){
     
          return $this->userName;
     
      }
     
     
     
      public function public setuserName($user) {
     
          $this->userName = $user;
     
      }
     
     
     
      public function public getpassword(){
     
          return $this->password;
     
      }
     
     
     
      public function public setpassword($pass) {
     
          $this->password = $pass;
     
      }
     
     
     
      public function public getdatabaseName(){
     
          return $this->databaseName;
     
      }
     
     
     
      public function public setdatabaseName($database) {
     
          $this->databaseName = $database;
     
      }
     
     
     
      public function public test() {
     
      		echo "$this->password est le mo2pass<br>";
     
      }
     
     
     
      /*Destructor*/
     
      public function __destruct() {
     
        fclose($this->serverName);
     
        fclose($this->userName);
     
        fclose($this->password);
     
        fclose($this->databaseName) ;
     
      } 
     
    }
     
     
     
    $conn = new Connexion('hum', 'arf', 'héhé', 'ha');
     
    $conn->test();
     
    ?>
     
    </body>
     
    </html>
    ca commence a me courir ce truc il compren pas le $this ou quoi ?

  5. #25
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Hmmm... Faut se méfier des lignes indiquées par l'interpréteur. Il arrive souvent (pour des raisons liées à la façon dont on construit les analyseurs syntaxiques) que la vraie erreur se trouve un peu avant, ou... un peu ailleurs

    Bref : le code de ton constructeur me semble bon.
    Par contre, les déclarations des fonctions qui suivent sont mauvaises : il y a un "public" en trop.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function public getserverName(){
         return $this->serverName;
      }
    Essaye déjà en corrigeant ça (enlève ce qui est en rouge) sur toutes les méthodes qui suivent le constructeur.

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    c vrai ke javai oublié de les virer ces "public" en trop mais ca n'enlève rien au problème !

  7. #27
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    J'avoue que je donne ma langue au chat. Le code est correct et devrait passer (et il passe bien chez moi...). Problème d'environnement ? J'ai cherché dans les options du php.ini mais rien ne me saute aux yeux...

    Ou alors l'erreur est ailleurs et apparaît ici du fait d'une série d'includes ?

    Le message semble montrer un conflit de nom. Ce conflit ne devrait pas avoir lieu mais... as-tu essayé en renommant les arguments de ton constructeur ? As-tu essayé avec une classe basique pour t'assurer que l'interpréteur fonctionne bien dans les cas standard ? Faute de mieux, il va falloir tâtonner de la sorte pour localiser le problème. Et c'est très probablement un truc à la con, en plus...

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    jai essayé de mettre de chaines de caractère basiques genre 'meuh' et de virer $this->serverName pour mettre simplement $serverName mais rien n'y fait !

    Et je suis d'accord pour dire que ca doit etre un truc à la con mais tout de même j'essaye sur un site perso (FREE) et après sur un serveur fait pour ca et toujours problème !

    On ne m'en voudra pas si je dit un grand MERDE !

  9. #29
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Pourquoi dis-tu que ça plante sur la première ligne du constructeur au fait ?
    D'après ton code, la ligne 19 (signalée dans le msg d'erreur) correspond à

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    C'est parce que quand j'ai copié le code dans le message, il s'est ajouté d retour chariot sous chaque ligne mais c'est bien la 1ere ligne du constructeur qui plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $this->serverName = $serverName;

  11. #31
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    C'est vérolé, ton histoire... Faut essayer des diagnostics par étape. Vérifie déjà comment ça marche avec une classe minimaliste. En supposant que, pour quelque raison inexplicable (so far...), il y ait spécialement sur tes machines des conflits sur les noms de variables, fais-déjà tourner le code suivant sur ta page index.php (qui ne doit contenir QUE ce code là):
    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
    <html>
    <head>
    <title>Exercice 1</title>
    </head>
    <body>
    <?
    class ClasseTest
    {
       private $foo;
       public function __construct($inStr) {
           $this->foo = $inStr;
       }
    //   public function __construct($foo) {
    //       $this->foo = $foo;
    //   }
       public function __toString() {
           return $this->foo;
       }
    }
    $class = new ClasseTest('Bonjour');
    echo $class;
    ?>
    </body>
    </html>
    Si ça marche (ça DOIT marcher), mets le constructeur en commentaires et active celui du dessous.
    Si ça ne marche pas, alors tu as bien un conflit sur les noms de variables. En attendant de savoir pourquoi, arrange-toi pour donner aux variables en entrée des méthodes un autre nom que celui des attributs de ta classe. Mais surtout, fais le siège de ton admin réseau pour savoir d'où ça vient car c'est anormal (à ma connaissance).
    Si ça marche, alors ton problème est ailleurs : un caractère de contrôle parasite dans ton fichier texte, un include mal placé ou quelque autre énorme erreur du style...

  12. #32
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut


    Bon en reprenant cet exemple qui A marché et en remplaçant petit à petit toutes les variables mon code fonctionne.

    A certains moment il plantais sans trop savoir pourquoi il me mettai unexpected } alors que leur nombre était équivalent à celui des { (et dans le bon ordre). J'ai solutionné ce problème (et c'est là que ca devient drole) en enlevant tous les espaces qui pouvaient se trouver entre chaque ligne. Un exemple s'impose :

    Ce code là buggé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public function setserverName($server) {(espace)(espace)(espace)(retour chariot)
          $this->serverName = $server;(espace)(espace)(retour chariot)
      }
    (espace)(retour chariot)  
      public function setuserName($user) {(espace)(retour chariot)
          $this->userName = $user;
      }
    Ce code là ne bug pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public function setserverName($server) {(retour chariot)
          $this->serverName = $server;(retour chariot)
      }(retour chariot)
    (retour chariot)  
      public function setuserName($user) {(retour chariot)
          $this->userName = $user;(retour chariot)
      }

    Voilà c'est proprement hallucinant !! Je ne sais pas si c'est PHP5 qui tient à gérer les espaces ou mon logiciel avec lequel je code (tswebeditor) ou une symbiose entre les deux en tout cas, ca fout un superbe bordel !

    En vous remerciant les gens de m'avoir aidé !! !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2010, 17h29
  2. Faire des programmes Windows GUI : début difficile, perdu !
    Par telodo dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 04/10/2007, 15h22
  3. Début difficile en Visual C++ 2005 .NET
    Par kinouseb dans le forum C++/CLI
    Réponses: 6
    Dernier message: 22/11/2006, 09h20
  4. [RCP]Début difficile - Ou est ma vue ?
    Par Procyon dans le forum Eclipse Platform
    Réponses: 15
    Dernier message: 09/10/2006, 09h16

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