par
sadeq » 15 nov. 2005, 17:18
Sans devoir attacher la session à l'objet dans sa définition propre, tu peux passer les paramètres requis au constructeur.
Car la problèmatique est que tu ne peux affecter le login/pass aux propriétés login/pass de l'objet avant sa construction (new).
La réponse à ce problème est de passer les paramètres login/pass au constructeur.
Exemple :
<?
class machin {
//Définition des propriétés
public $login;
public $pass;
//constructeur paramètré
public function __construct($login, $pass) {
//Affectation
$this->login = $login;
$this->pass = $pass;
//ouverture de la base en utilisant login/pass
....
}
//2° constructeur sans paramètres
public function __construct(){
//Servira pour construire des objets sans automatiser l'ouverture de la base
}
}
?>
Pour construire un objet machin avec ouverture de la BD :
$machin = new machin("toto", "son pass");
Si besoin est, on peut toujours construire des objets machin sans ouverture forcée de la BD :
$machin = new machin(); //sans passer les paramètres : sera pris en charge par le 2° constructeur.
Dans le cadre d'une session, il suffit de mémoriser l'objet machin dans une variable session et veiller à ne le reconstruire que pour une nouvelle session :
if (isset($_SESSION["machin"]))
$machin = $_SESSION["machin"];
else {
$machin = new machin("toto", "son pass");
$_SESSION["machin"] = $machin;
}
.... //utiliser $machin
Ceci veut dire que l'objet doit provenir de la session s'il existe déjà sinon c'est un nouvel objet.
mais la meilleure écriture qui assure un enregistrement/mise à jour de l'objet contenu dans la session tout au long du programme est la suivante:
if (! isset($_SESSION["machin"])) $_SESSION["machin"] = new machin("toto", "son pass");
...//utiliser $_SESSION["machin"] comme objet machin
Sans devoir attacher la session à l'objet dans sa définition propre, tu peux passer les paramètres requis au constructeur.
Car la problèmatique est que tu ne peux affecter le login/pass aux propriétés login/pass de l'objet avant sa construction (new).
La réponse à ce problème est de passer les paramètres login/pass au constructeur.
Exemple :
[php]
<?
class machin {
//Définition des propriétés
public $login;
public $pass;
//constructeur paramètré
public function __construct($login, $pass) {
//Affectation
$this->login = $login;
$this->pass = $pass;
//ouverture de la base en utilisant login/pass
....
}
//2° constructeur sans paramètres
public function __construct(){
//Servira pour construire des objets sans automatiser l'ouverture de la base
}
}
?>
[/php]
Pour construire un objet machin avec ouverture de la BD :
$machin = new machin("toto", "son pass");
Si besoin est, on peut toujours construire des objets machin sans ouverture forcée de la BD :
$machin = new machin(); //sans passer les paramètres : sera pris en charge par le 2° constructeur.
Dans le cadre d'une session, il suffit de mémoriser l'objet machin dans une variable session et veiller à ne le reconstruire que pour une nouvelle session :
[php]
if (isset($_SESSION["machin"]))
$machin = $_SESSION["machin"];
else {
$machin = new machin("toto", "son pass");
$_SESSION["machin"] = $machin;
}
.... //utiliser $machin
[/php]
Ceci veut dire que l'objet doit provenir de la session s'il existe déjà sinon c'est un nouvel objet.
mais la meilleure écriture qui assure un enregistrement/mise à jour de l'objet contenu dans la session tout au long du programme est la suivante:
[php]
if (! isset($_SESSION["machin"])) $_SESSION["machin"] = new machin("toto", "son pass");
...//utiliser $_SESSION["machin"] comme objet machin
[/php]