begin process at 2010 02 10 14:21:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

surcharge constructeur et avis pour mes classes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

surcharge constructeur et avis pour mes classes

samedi 10 mars 2007 à 19:49:12 | surcharge constructeur et avis pour mes classes

vega11

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 !







samedi 10 mars 2007 à 20:30:41 | Re : surcharge constructeur et avis pour mes classes

J_G

Salut,


Pour le premier point, tu peux définir une valeur par défaut pour tes paramètres:

function ( $param = 'valeur par défaut' ) {
    echo $param;
}

ça marche aussi pour le constructeur :
public function __construct( $id = false ) {
    if ( $id === false ) // action sans paramètres
    else // action avec l'id
}


Pour ton deuxième point, cherche la doc sur les fonctions magiques __set() et __get()... Ca surcharge la façon de modifier, récupérer un paramètre de classe...

http://www.php.net/manual/fr/language.oop5.overloading.php

Tu peux alors t'amuser à faire comme le premier exemple, utiliser un tableau pour stocker les variables... du coup, tu pourrais toutes les charger d'un coup...

$object->x = $array_info;

Sinon, un foreach sur un objet te permet de faire
foreach ($object as $property=>$value) $object->$property = $new_value;


Par exemple...
Enfin... je te laisse jouer!
A+

A+
samedi 10 mars 2007 à 21:00:20 | Re : surcharge constructeur et avis pour mes classes

DiGhan

Salut, php n'offre pas la possibilité d'implémenter plusieurs constructeurs avec des signatures différentes. La seule solution est d'utiliser les fonctions func_get_num_args() pour connaitre le nombre de paramètres et func_get_args() ou func_get_arg() pour récupérer les valeurs des paramètres. ex: class CConstruct { public __construct() { $nArgs = func_get_num_args(); switch($nArgs) { case 0: case 1: default: ect ect ... } } }
dimanche 11 mars 2007 à 09:39:45 | Re : surcharge constructeur et avis pour mes classes

vega11

Réponse acceptée !
Ok ! merci beaucoup je pensais que c'était possible la surcharge de constructeur en php5 je vais donc utiliser une de ces 2 méthodes merci beaucoup ^^

Je vais pouvoir paufiner tout ca :D
dimanche 11 mars 2007 à 21:50:23 | Re : surcharge constructeur et avis pour mes classes

FhX

Tout comme la surcharge de n'importe quoi :)

Tu ne peux faire que de l'héritage de méthode pour le moment !


Cette discussion est classée dans : message, user, infos, id, database


Répondre à ce message

Sujets en rapport avec ce message

Avoir des infos sur un user [ par Yuleesize ] Ehh bjr. En fait j'aimerait bien savoir komment on fé pour avoir des infos sur l'user... Comme par ex l'host... l'os... le navigateur... etc... En fai ftp EN LOCAL [ par zakuli ] Bonjour,Débutant en ftp, je voudrais tout simplement exécuter LOCALEMENT le script ci joint :$conn_id = ftp_connect($ftp_server); $login_result = ftp_ Help session [ par Antidote ] Bonjur j'ai un probleme avec l'utilisation de me session. est ce que les _ sont autorisé dans les nom de session ? tel que $_SESSION['user_id'] parce Comment remmetre les ID en ordre. [ par BenXbox ] Salut à tous,Voila j'aimerez bien savoir comment je peut remmetre les ID dans l'ordre, c'est à dire :- J'ai dans ma table un message qui à l'ID 1 puit centrer une requete mysql [ par martiall ] Bonjour,bon le titre est un peu tiré par les cheveux mais bon...Pour simplifier, j'ai une table user (ID_USER, PSEUDO)depuis une page, je séléctionne Impossible de récuperer la variable dans une URL [ par vinzlol2 ] J'ai besoin de  recuperer l'id qui se trouve dans l'URL afin de mettre a jour mes tables Voici l'URL mon formulaire:http://.../editeur.php?id=190 .   oh misére o desespoir , bleme de requette [ par CCJ ] bonjour alors que j'etait sur le point de finir le forum sur mon site , un bleme aparut. voici mon code: session_start(); if(isset($_SESSION['Pseudo' Recuperer des infos sur deux tables puis tri et affichage :s [ par SDK_akira ] Bonjour, J'ai un probleme toujours relatif à ma gallerie d'image enfin au niveau de l'affichage des categories et sous categories, mes tables sont co Erreur de syntaxe!!! [ par lebelm ] Bonjour, J'essaie de créé un form pour ajouter des users. Les infos du user dans une table et les privilèges dans l'autre, mais sa me donne une erreur Recuperation variable formulaire [ par drebin78945 ] bonjour,qq'un pourrait il me dire ce qui ne va pas avec cette requete, qui m'a pourtant l'air ok:$query="SELECT id_user,login,nom,prenom,mail,ville,te


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales