Utilisation de constructeur
Bonjour tout le monde,
Je réalise un site web en PHP orientée objet donc je posséde des classes, des DAO(classe d'accées aux données), des controles et des vues.
Dans mes méthodes des DAO, je souhaite utiliser le constructeur de ma classe, Voici un 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 25 26 27 28 29 30 31 32 33
| <?php
class categorie{
private $Str_code; // Le code de la catégorie
private $Str_libelle; // Le libéllé de la catégorie
// Constructeur
public function categorie($c=null, $l=null){
$this->code = $c;
$this->libelle = $l;
}
// Methodes getteurs
public function get_code()
{
return $this->Str_code;
}
public function get_libelle()
{
return $this->Str_libelle;
}
// Methodes setteurs
public function set_code($lecode)
{
$this->Str_code=$lecode;
}
public function set_libelle($lelibelle)
{
$this->Str_libelle =$lelibelle;
}
}
?> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
class DAO_Categorie
{
public static function ChargerTteCategorie()
{
$Col=new collection();//pas dans le while
$req="SELECT * FROM categorie";
//echo $req;
$jeu=mysql_query($req);
while($ligne=mysql_fetch_array($jeu))
{
$MaCategorie = new categorie($ligne["CODECAT"], $ligne["Ca_DESIGN"]);
$Col->add($MaCategorie);
}
return $Col->getAll();
} |
J'ai un constructeur 'C_menuNeuf' :
Code:
1 2 3 4
| <?php
$MesCategories = DAO_Categorie::ChargerTteCategorie();
require_once("Vues/V_menuNeuf.php");
?> |
Une vue 'V_menuNeuf' :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <ul> <!-- Crée une liste à puces -->
<tr>
<th>Par les catégories</th>
</tr>
<?php
// Pour chaque tableau de catégorie
foreach ($MesCategories as $Categorie)
{
?>
<li><!-- Crée un nouvel élément pour une liste -->
<!-- Permet d'exécuter l'action cat et de choissir la catégorie -->
<a href="Index.php?action=categorie&choix=<?php echo $Categorie->get_code();?> ">
<?php echo $Categorie->get_libelle();?>
</a>
</li>
<?php
}
?>
</ul> |
Lorsque j'exécute mon site : il m'affiche 3 points, donc il voit bien qu'il y a 3 catégorie dans ma base de données MySql. Mais n'affiche pas leur nom.
Par contre si la méthode de la DAO est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public static function ChargerTteCategorie()
{
$Col=new collection();//pas dans le while
$req="SELECT * FROM categorie";
//echo $req;
$jeu=mysql_query($req);
while($ligne=mysql_fetch_array($jeu))
{
$MaCategorie=new categorie();
$MaCategorie->set_code($ligne["CODECAT"]);
$MaCategorie->set_libelle($ligne["Ca_DESIGN"]);
$Col->add($MaCategorie);
}
return $Col->getAll();
} |
là, lorsque j'exécute mon site web, j'obtien bien les noms de chaque catégorie.
Donc je me demande si en PHP orientée objet, on peut utiliser le constructeur de la classe??
Si on le peux vraiment, d'aprés vous, que dois-je faire pour régler mon problème??
Merci d'avance en espérant que vous éclairerez ma lumière car cela fais plusieurs jours que j'y réfléchi...!!