[POO] Variable et portée.
Bonjour,
Alors je vais rapidement vous expliquer le petit soucis sur lequel je travaille.
Supposons une class Test, le but serai d'avoir dans cette classe la possibilité d'avoir une variable dont la portée dépasse la classe pour pouvoir être utilisé dans une autre classe ou simplement dans le code principal d'une page.
Pour l'instant la seule manière que j'ai trouvé et de créer soit un cookie, soit une variable de session, mais je ne trouve pas ça très propre.
Exemple ::
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
|
<?php
session_start();
class Test{
//variables
public function __construct()
{
$var = "une variable";
$_SESSION["portee"] = $var;
setcookie("portee", $var);
}
}
$test = new Test();
echo $_SESSION["portee"];
echo "<br />";
echo $_COOKIE["portee"];
?> |
Ainsi, j'aimerai savoir si il est possible d'avoir le même résultat en utilisant des propriétés de la POO, car pour l'instant je me retrouve assez coincé.
De plus je cherche à faire cela pour l'utiliser dans une autre classe car je n'ai pas encore trouvé le moyen de faire une passerelle entre deux classes comme dans l'exemple qui suit ::
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
|
<?php
class Test{
//variables
public function __construct()
{
$test = "C'est un test";
$essai = new TestBis($test);
}
}
class TestBis{
//variables
private $test;
public function __construct($test)
{
$this->test = $test;
}
public function Afficher(){
echo $this->test;
}
}
$test = new Test();
$essai->Afficher();
?> |
Ici, nous nous retrouvons avec un code d'erreur car forcément PHP ne reconnait pas la variable associée à l'objet créé dans la class Test
Code Erreur :
Code:
1 2 3
| Notice: Undefined variable: essai in C:\Program Files\EasyPHP 2.0b1\www\Class\test.php on line 33
Fatal error: Call to a member function Afficher() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\Class\test.php on line 33 |
Donc voilà au final, ce qui m'intéresserait, c'est de trouver une solution pour le deuxième cas, et s'il n'en existe pas, trouver une manière plus propre qu'un cookie ou une session pour le premier cas.
Merci d'avance pour votre aide,
Cordialement,