Bonjour à tous, je refais actuellement mon site en php objet 5 après un super stage en JAVA, je trouve le php réellement sympa en objet ^^
Une chose me chagrine je ne trouve pas comment faire une surcharge de constructeur, je m'explique.
Pour ma classe Message, j'ai besoin de 2 constructeurs.
un qui s'initialise avec l'id quand je recup tous les id des messages d'une personne et que je boucle pour créer chaque message et les charger.
un qui fonctionne sans parametres lorsque je fais appel à une methode d'envoi de message et donc l'id sera mis lors de l'INSERT dans la base.
function __construct($id){
$this->id=$id;
}
j'ai essayé de mettre le deuxieme comme ceci :
function __construct(){
}
mais ca ne marche pas et si je ne met pas de deuxieme constructeur je ne peux de tte facon pas instancier la classe sans le parametre id.
j'ai aussi beaucoup avancé au niveau des classes avec un pseudo singleton sur ma classe Database car toutes les requetes passe par elle et je réutilise donc mon objet instancié de Database assez souvent dans les autres classes.
2 exemples :
1) dans la classe User (méthode envoi de mess)
function sendMessageTo($receiver,$message){
$message->setSender($this->getLogin());
$message->setReceiver($receiver);
$db=Database::getCurrent(); //methode statique qui renvoi la database courante ^^
$db->sendMessage($message);
}
qui se traduit dans la classe Database par
function sendMessage($message){
$this->queryUpdate($this->sendMessageQueryString($message));
}
2) dans la classe user (méthode qui charge les infos dans l'objet)
function load(){
$db=Database::getCurrent();
$db->loadUser($this);
}
qui se traduit dans Database par
function loadUser($user){
$login=$user->getLogin();
$infos=$this->query($this->loadUserQueryString($login));
$user->setName($infos->CliPrenom);
$user->setAvatar($infos->avatar);
$user->setMail($infos->mailclient);
$user->setCity($infos->ville);
$user->setSex($infos->sexe);
$user->setDescription($infos->description);
$user->setGoodside($infos->qualite);
$user->setBadside($infos->defaut);
$user->setNet($infos->net);
$user->setSport($infos->sport);
$user->setMusic($infos->music);
$user->setBirth($infos->daten);
$user->setStatus($infos->celib);
$user->setInscriptionDate($infos->dateinsc);
}
Je programme en objet depuis seulement 2 mois si je compte le stage donc toutes les précisions sont le bienvenu.
J'aimerais donc une solution pour la surcharge et votre avis sur mon debut d'architecture objet.
Merci d'avance !