utiliser une méthode booléenne

utiliser une méthode booléenne - PHP - Programmation

Marsh Posté le 04-07-2006 à 12:41:28    

Bonjour,  
je débute totalement en php, je tente de reproduire ce que je connais en prog objet (java), mais j'ai qqs soucis.  
Qqn pourrait il m'expliquer pourquoi un appel à la méthode "ouvrir" (voir l'extrait de la classe) débouche sur ceci :

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home.10/claustre/www/webcv/php/outils.php on line 51


extrait de la classe (la ligne 51, c'est celle comportant l'appel à hasTitre()):  


class Paragraphe {
var $titre;
  function setTitre ($titre) {
    $this->titre = $titre;
  }
 
  function hasTitre () {
    return (strlen ($this->titre) > 0);
  }
 
  function ouvrir () {
    echo "<div class=\"paragraphe\">\n";
     
    if (this->hasTitre ()) {
      echo "<h2>{$this->titre}</h2>\n";
      }
  }
   
  function fermer ($topLink = false) {
    if ($topLink) {
      $this->topLink();
    }
    echo "</div>\n";
  }
   
}


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 04-07-2006 à 12:41:28   

Reply

Marsh Posté le 04-07-2006 à 13:00:13    

if ($this->hasTitre ()) {
 
 
 

Reply

Marsh Posté le 04-07-2006 à 13:51:54    

J'étais sur que c'était bête comme choux ! Merci beaucoup.
Pendant que j'y suis, je m'my prend correctement pour tester si $this->titre n'a pas été renseignée ou est vide ? (ça fonctionne en tout cas)


Message édité par El_gringo le 04-07-2006 à 13:52:10

---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 04-07-2006 à 14:03:26    

Moi je la verrai comme ça
 
Dans ton constructeur tu initialises $this->titre = "";
 
et tu fais ta fonction comme ceci
 

Code :
  1. function hasTitre () {
  2. if($this->titre != "" ) return false;
  3. else return true;
  4.    
  5.   }
  6. ou bien
  7. function hasTitre () {
  8. if(strlen($this->titre)>0) return true;
  9. else return false;
  10.    
  11.   }

Reply

Marsh Posté le 04-07-2006 à 14:11:40    

Bon, tes "if-else" et "true-false" sont en trop.
C'est plus simple (et logique) de retourner directement le résultat de "(strlen($this->titre)>0)", comme je le fait.


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 04-07-2006 à 14:25:26    

Et dans le cas ou tu as juste un espace dans ton titre ? :D
 
Mes 2 méthodes marchent aussi certes c'est plus long à écrire mais pour ma part je trouve ça plus facile à relire ^^

Reply

Marsh Posté le 04-07-2006 à 15:37:51    

chacun ses gout. Perso je trouve ma méthode tout aussi lisible.
Merci d'avoir donne ton avis en tout cas.


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 04-07-2006 à 15:50:56    

Code :
  1. function hasTitre () {
  2.    return !empty($this->titre);
  3. }

Reply

Marsh Posté le 04-07-2006 à 15:55:19    

El_gringo a écrit :

Bon, tes "if-else" et "true-false" sont en trop.
C'est plus simple (et logique) de retourner directement le résultat de "(strlen($this->titre)>0)", comme je le fait.


C'est dommage de sous-traiter par une fonction "strlen" alors que php accepte les comparaisons directes sur les chaînes

Code :
  1. function hasTitre() {
  2.     return $this->titre != "";
  3. }



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 04-07-2006 à 17:06:56    

ça c'est vrai !
Merci.


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed