Relecture de Code
Posté : 08 avr. 2009, 11:59
Bonjour,
je planche actuellement sur les bugs d'une application en php. J'ai réussi plus ou moins à localiser le problème : dans la fonction init, les périmètres sont bien initialisés mais pas les sous périmètres.
Le problème ? Ben...j'ignore totalement pourquoi le code m'ayant plutôt l'air correct.
Regardez-plutôt :
Est-ce qu'il y a quelque chose dans ce code qui pourrait expliquer pourquoi les sousPérimètres ne sont pas initialisés ?
Merci d'avance.
je planche actuellement sur les bugs d'une application en php. J'ai réussi plus ou moins à localiser le problème : dans la fonction init, les périmètres sont bien initialisés mais pas les sous périmètres.
Le problème ? Ben...j'ignore totalement pourquoi le code m'ayant plutôt l'air correct.
Regardez-plutôt :
<?php
require_once('DAO.class.php');
class PerimetreMgr extends DAO {
private static $instance;
// association with Perimetre class
private $perimetres=array();
// association with SousPerimetre class
private $sousPerimetres=array();
/* Constructeur de la classe */
protected function __construct($init){
parent::__construct();
$this->_init($init);
}
/* Initialise les 2 attributs 'périmètres' et 'sousPerimetres' avec l'ensemble des valeurs en base de données */
private function _init($init){
$this->perimetres = array();
$this->sousPerimetres = array();
if($init){
$q = "select * from perimetre order by nom_perimetre asc";
$qr = parent::exec($q);
while($row = $qr->fetch()){
// Instanciation du périmetre
$est_productif = ($row['est_productif'] == 1 ) ? true : false;
$newPerimetre = new Perimetre($row['id_perimetre'], $row['nom_perimetre'], $est_productif, "", array());
try{
$_q = "select * from sous_perimetre where perimetre = " . $row['id_perimetre'] . " order by description asc";
$_qr = parent::exec($_q);
while($_row = $_qr->fetch()){
// Instanciation des sous perimetre du perimetre
array_push($this->sousPerimetres, new SousPerimetre($_row['id_sous_perimetre'], $_row['description'], $newPerimetre));
}
array_push($this->perimetres, $newPerimetre);
}
catch (PDOException $e){
echo $e->getMessage();
}
}
}
}
/* Crée une instance du singleton si aucune n'existe */
public static function getInstance($init = true) {
if($instance == null){
$instance = new PerimetreMgr($init);
}
return($instance);
}
}
?>
Ma question est la suivante :Est-ce qu'il y a quelque chose dans ce code qui pourrait expliquer pourquoi les sousPérimètres ne sont pas initialisés ?
Merci d'avance.