Bonjour !
Voilà, je viens d'attaquer le php objet, dans le cadre de mon stage.
Je code une application web dans laquelle j'ai besoin d'un calendrier en base de données, que j'ai déjà créé.
J'ai un soucis avec une classe : la classe Jour.
J'ai une méthode statique, qui est censée me renvoyer (sous forme de tableau) une liste des jours pour un mois et une année donnée.
Le soucis est que la méthode me renvoit un tableau vide, et je ne sais absolument pas pourquoi.
Je crois avoir identifié le problème, à l'aide d'alerts javascript. Problème qui semble se trouver au moment de l'instanciation des jours...
J'ai placé mon alert juste après l'instanciation de mon Jour, qui est censée m'afficher le numéro de ce dernier fraichement créé.
Je vous laisse le code de la classe complète, et une page de test.
- Classe
- Page Test
Voilà. Le soucis est que j'obtiens une liste de <td></td> remplie de 0 (NoJour) et de chaine vide (NomJour).
De plus, j'obtiens donc comme prévu une série d'alert javascript, qui sont elles-aussi vide.
Le soucis ne vient pas de la requète, puisqu'en ayant remplacé mes alerts par :
là, mon numéro était bien renvoyé correctement.
J'ai vraiment du mal à saisir le problème.
Ne peut-on pas instancier un objet depuis une méthode de classe ?
Modifié par Shqdow (15 Feb 2011 - 10:43)
Voilà, je viens d'attaquer le php objet, dans le cadre de mon stage.
Je code une application web dans laquelle j'ai besoin d'un calendrier en base de données, que j'ai déjà créé.
J'ai un soucis avec une classe : la classe Jour.
J'ai une méthode statique, qui est censée me renvoyer (sous forme de tableau) une liste des jours pour un mois et une année donnée.
Le soucis est que la méthode me renvoit un tableau vide, et je ne sais absolument pas pourquoi.
Je crois avoir identifié le problème, à l'aide d'alerts javascript. Problème qui semble se trouver au moment de l'instanciation des jours...
J'ai placé mon alert juste après l'instanciation de mon Jour, qui est censée m'afficher le numéro de ce dernier fraichement créé.
Je vous laisse le code de la classe complète, et une page de test.
- Classe
<?php
require_once(".\Utils\Connexion.php");
class Jour
{
//--Propriétés
private $No;
private $Nom;
private $Mois;
private $An;
//--Constructeur
public function __construct()
{
$NbArgs = func_num_args();
switch($NbArgs)
{
case 4:
$this->No = func_get_arg(0);
$this->Nom = func_get_arg(1);
$this->Mois = func_get_arg(2);
$this->An = func_get_arg(3);
default:
$this->No = "";
$this->Nom = "";
$this->Mois = "";
$this->An = "";
break;
}
}
//--Méthodes statiques
public static function liste($Mois, $An)
{
$result = $GLOBALS["mysqli"]->query("SELECT * FROM JOUR WHERE moisjour = $Mois AND anjour = $An");
$Jours = Array();
if($result)
{
$row = $result->fetch_assoc();
while($row)
{
$Jour = new Jour($row["nojour"], $row["nomjour"], $row["moisjour"], $row["anjour"]);
echo '<script>alert("' . $Jour->getNo() . '")</script>';
$Jours[] = $Jour;
$row = $result->fetch_assoc();
}
}
return($Jours);
}
//--Accesseurs
public function getNo()
{
return $this->No;
}
public function setNo($Id)
{
$this->No = $Id;
}
public function getNom()
{
return $this->Nom;
}
public function setNom($Nom)
{
$this->Nom = $Nom;
}
}
?>
- Page Test
<?php
require_once('ClassesMetiers.php');
?>
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body>
<?php
$Mois = 11;
$An = 2012;
$Jours = Jour::liste($Mois, $An);
?>
<table>
<tr>
<?php
foreach($Jours AS $jour)
{
echo "<td>";
echo $jour->getNo() + "</br>" + $jour->getNom();
echo "</td>";
}
?>
</tr>
</table>
</body>
</html>
Voilà. Le soucis est que j'obtiens une liste de <td></td> remplie de 0 (NoJour) et de chaine vide (NomJour).
De plus, j'obtiens donc comme prévu une série d'alert javascript, qui sont elles-aussi vide.
Le soucis ne vient pas de la requète, puisqu'en ayant remplacé mes alerts par :
echo '<script>alert("' . $row["nojour"] . '")</script>';
là, mon numéro était bien renvoyé correctement.
J'ai vraiment du mal à saisir le problème.
Ne peut-on pas instancier un objet depuis une méthode de classe ?
Modifié par Shqdow (15 Feb 2011 - 10:43)