Problème portée variables en PHP

Fermé
Obzen - 7 févr. 2010 à 14:51
 Obzen - 7 févr. 2010 à 14:58
Bonjour à tous,

J'ai un soucis que j'essaie de résoudre depuis plus de deux heures, je crois que je vais aller me pendre si personne ne m'explique.

J'ai simplifié ici le problème. J'ai un fichier test.php avec une classe test et un fichier main.php. Je voudrais savoir, dans l'exemple ci-dessous, pourquoi rien ne s'affiche à l'appel de la fonction __toString(), comme si la variable '$tab' ne contenait rien du tout :

test.php :

<?php

class test{
private $tab;

public function __test(){
global $tab;
$tab = array();

$this->tab[0][0] = 2;
$this->tab[0][1] = 3;
}

public function __toString(){
global $tab;

$t='<table border="1" id="tableau">';

$t .= '<tr><td>'.$this->tab[0][0].'</td><td>'.$this->tab[0][1].'</td></tr>';

$t .= '</table>';

return $t;
}
}
?>

Et le fichier main.php contient simplement :
<?php
require_once("test.php");
$v = new test();
echo $v;
?>

Merci de m'aider...
A voir également:

1 réponse

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
7 févr. 2010 à 14:54
Retire les deux __ devant ton constructeur test.

Ou alors remplace test par constructor.

Pas besoin de mettre global $tab; vu qu'il appartient à la classe test.

Quand tu fait un "echo $v;" tu n'affiche que l'objet, hors il vaut mieux afficher un champ.

Pour ce faire met par exemple $tab en public et tu pourra faire ceci :

echo $v->tab;

Bonne chance.
1
Merci... !
0