Accès une instance depuis une classe
Posté : 13 avr. 2010, 13:17
Bonjour,
Je suis confronté a un petit problème assez simple en fait, auquel j'ai une solution mais qui n'est peut être pas forcément la bonne.
J'ai une classe config chargé de récupérer des paramètres dans ma BDD.
Comme j'ai besoin des paramètres de configuration dans la globalité de mon site, je créé l'objet $config dans l'index.
Le problème est que j'ai aussi besoin de certains paramètres au sein de mes autres classes et qu'a moins de déclarer $config comme global ( c'est mal je crois... ) il faut donc que je recréé l'objet $config la ou j'en ai besoin dans mes classes.
Vous allez me dire ou est le problème ? Le problème et qu'a cache création d'une instance $config je fait des requêtes sur ma BDD pour récupérer les paramètres de configuration. C'est donc assez bête de devoir exécuter x fois les mêmes requêtes alors que je l'ai déjà fait auparavant.
J'avais envisagé comme solution ( voir code plus bas ) de passer ma méthode getParam en public et static afin de pouvoir l'exécuter depuis une autre classe pour ne récupérer uniquement le paramètre dont j'ai besoin.
A moins que je puisse accéder a mon instance $config créée dans l'index depuis une classe, mais je ne vois pas comment ?
Avez-vous une autre piste ?
Je suis confronté a un petit problème assez simple en fait, auquel j'ai une solution mais qui n'est peut être pas forcément la bonne.
J'ai une classe config chargé de récupérer des paramètres dans ma BDD.
Comme j'ai besoin des paramètres de configuration dans la globalité de mon site, je créé l'objet $config dans l'index.
Le problème est que j'ai aussi besoin de certains paramètres au sein de mes autres classes et qu'a moins de déclarer $config comme global ( c'est mal je crois... ) il faut donc que je recréé l'objet $config la ou j'en ai besoin dans mes classes.
Vous allez me dire ou est le problème ? Le problème et qu'a cache création d'une instance $config je fait des requêtes sur ma BDD pour récupérer les paramètres de configuration. C'est donc assez bête de devoir exécuter x fois les mêmes requêtes alors que je l'ai déjà fait auparavant.
J'avais envisagé comme solution ( voir code plus bas ) de passer ma méthode getParam en public et static afin de pouvoir l'exécuter depuis une autre classe pour ne récupérer uniquement le paramètre dont j'ai besoin.
A moins que je puisse accéder a mon instance $config créée dans l'index depuis une classe, mais je ne vois pas comment ?
Avez-vous une autre piste ?
<?php
class config{
private $modules;
private $nomSite;
private $descriptionSite;
public function __construct(){
$this->modules = $this->getModules();
$this->nomSite = $this->getParam('nom_site');
$this->descriptionSite = $this->getParam('description_site');
}
public function getModule($cle){
return $this->modules[$cle];
}
public function getEtatModule($cle){
return $this->modules[$cle]['etat'];
}
public function getNomSite(){
return $this->nomSite;
}
public function getDescriptionSite(){
return $this->descriptionSite;
}
private function getModules(){
$modules = array();
$val = array();
$bdd = bdd::getInstance()->prepare("SELECT * FROM module");
$bdd->execute($val);
while($row = $bdd->fetch(bdd::FETCH_ASSOC)){
$modules[$row['cle']] = $row;
}
return $modules;
}
private function getParam($cle){
$val = array(':cle' => $cle);
$bdd = bdd::getInstance()->prepare("SELECT valeur FROM config WHERE cle = :cle");
$bdd->execute($val);
$row = $bdd->fetch(bdd::FETCH_ASSOC);
return $row['valeur'];
}
}
?>