Pour illustrer un peu plus, je code un site de questions réponses. Sur la page question, l objet question est crée avec deux parametre : id_question et url_question.
Dans ma classe, je retourne donc la question correspondante dans ma BD avec ses deux parametres.
Je me suis arrengé pour que si, l id et l url ne corresponde pas, ça me lève une exception. Mais pour des soucis de référencement, je désirerai que l exception leve une erreur 404.
try{
//Recuperation de l ID passé en parametre dans l URL
$id_question = $_GET['num_quest'];
$url_question = $_GET['url_quest'];
$oQuestion = new question($id_question,$url_question);
$oQuestion->_affichQuestion(); //Methode affichant la question dont l'ID et l URL est passé en paramettre (requete SQL)
if(empty($oQuestion->m_aAffichQuestion['qid_question'])){
throw new MyException('<div class="msg_err"><p>La question n\'existe pas ou a été éffacée.</p></div>');
} //levé exception 404 ici demandé
/** suite du code **/
}catch(MyException $e){
echo $e->getError();
}
Et voila ma classe MyException
class MyException extends Exception {
// Constructeur de la classe.
public function __construct($msg) {
parent :: __construct($msg);
}
// Pour le fun, on ajoute une méthode qui récupère l'heure de l'erreur.
public function getTime() {
return date('Y-m-d H:i:s');
}
// Méthode retournant un message d'erreur complet et formaté.
public function getError() {
// On retourne un message d'erreur complet pour nos besoins.
// $return = '<br />Une exception a été gérée :<br/>';
$return .= '<strong>'.$this->getMessage().'</strong><br/>';
//$return .= 'A la ligne : ' . $this->getLine() . '<br/>';
//$return .= 'Dans le fichier : ' . $this->getFile() . '<br/>';
//$return .= 'Il était : ' . $this->getTime();
return $return;
}
}
J ai pensé à créé une nouvelle classe MyException404 mais je ne sais pas quoi mettre dans ma méthode.Merci