[POO] Script tiré d'un tutorial qui ne marche pas.
Bonjour,
J'ai trouvé un tutoriel assez intéressant au sujet de de la POO pour débutant. Cependant quand je fait un essai en local du programme j'ai une jolie erreur.
Voici le script :
Code:
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
| <?php
class Stylo {
static private $niveau_encre_max = 100;
static private $niveau_encre_min = 25;
private $niveau_encre;
protected $couleur_normale = '#000000';
protected $couleur_fin = '#C0C0C0';
public $statut;
private function peutEcrire() {
if (!$this->statut) {
$result = false;
} elseif ($this->niveau_encre<=0) {
$result = false;
} else {
$result = true;
}
return $result;
}
public function __construct() {
$this->statut = false;
$this->niveau_encre = self::$niveau_encre_max;
}
public function click() {
if ($this->statut) {
$this->statut = false;
} else {
$this->statut = true;
}
}
public function ecrire($texte) {
if ($this->peutEcrire()) {
echo '<p style="color:'.$this->couleur_normale.'">';
$nb_caracteres = strlen($texte);
$texte = htmlentities($texte);
$texte = str_split($texte);
$i = 0;
while($this->peutEcrire() && $i<=$nb_caracteres) {
if ($this->niveau_encre==self::$niveau_encre_min) {
$format = '<span style="color:'.$this->couleur_fin.'">%s';
} else {
$format = "%s";
}
printf($format, $texte[$i]);
$i++;
$this->niveau_encre --;
}
if ($this->niveau_encre<=self::$niveau_encre_min) {
echo "</span>";
}
echo "</p>\n";
}
}
}
$monBic = new Stylo();
$monBic->ecrire('Essayez d\écrire sans enlever le capuchon
') ;
$monBic->click() ;
$monBic->ecrire('Un premier paragraphe.') ;
$monBic->ecrire('Un second paragraphe qui n\'iras pas jusque au bout car mon stylo va certainement manquer d\'encre.');
$monBic->click() ;
?> |
Voici l'erreur que j'obtiens:
Code:
Notice: Undefined offset: 22 in C:\Program Files\EasyPHP 2.0b1\www\Lab\essai\test.php on line 49
Merci de m'éclaircir, apparement ce serait un problème de tableau.