CLASS WEBMAIL

Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
- - Dernière réponse :  Alain - 25 sept. 2014 à 12:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44833-class-webmail

Afficher la suite 
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
juste un petit message pour suivre ce fil :P.
je regarderai ta classe dès que j'aurais un peu de temps
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
1 -
Les bonnes balises php sont <?php et non <? qui peuvent être confondues avec un tag XML
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
juste pour info :
dans ta méthode trouverNom, tu fais (erreur plusieurs fois présentes) :

for ($i=0;$i<sizeof($dparam);$i++)

tu devrais sortir sizeof de la boucle, ca fait un calcul inutile a chaque itération (temps de perdu)

tu as des propriétés sans setter ni getter, c'est pas forcement génant, mais ca me choque un peu.
de plus, tu initialises le domaine dans la définition de ta classe, autant le faire dans une constante de classe, comme ca aucun risque qu'il y ait de modification de celle-ci

Tu devrais peut etre un peu plus/mieux découper cette classe.
De plus, tu ne devrais pas inclure la présentation a ta classe, i.e. ne pas avoir de HTML dedans
Enfin, je ne suis pas sur qu'en imap, il n'y ait que 4 "types de repertoire" (INBOX.Trash, INBOX.Draft, INBOX.Sents, INBOX), un plus serait une gestion de l'envoi et du POP

Bon courage, et merci de ta participation
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Hello,

pour rebondir sur ce que dit Garfield :
- je trouve moi génant que tu n'aies pas de getter ni de setter pour les propriétés changeantes : domaine, format des emails...Ou au moins un méthode de configuration. Tu as des accesseurs, mais puisque tu bosses en php5, pourquoi ne pas utiliser __get() ? M'enfin, ça, c'est une question de préférence après tout.
- je suis tout à fait d'accord sur le html et les css : tu devrais vraiment les sortir de là.
Pour faciliter la vie des débutants, j'aurais mis une classe output, gérant l'output donc, et basée sur un système de templating simple (et propriétaire : j'entends par là, inutile de charger un smarty ou autre...ce serait bien trop lourd pour rien. D'ailleurs, c'est touyjours trop lourd pour rien les moteurs de template à la Smarty ;-) mais ça n'engage que moi!).
- ça manque de tests d'intégrité des paramètres reçus. On peut passer n'importe quoi, ta classe essayera de s'en servir et plantera lamentablement. Encore une fois, des exceptions avec un message clair seraient les bienvenues.
- j'aime bien avoir des variables typées, moi, ça facilite nettement les choses quand on relit un code. Mais bon.
- vu que t'as inclus tout le html, autant donner ta css et les images avec le code, non? Parce que là...le faire tourner donnerait quelque chose de très moche, pour test.
- sinon c'est pas mal! Ca change un peu comme type de code, c'est agréable. Et puis c'est aéré, facile à lire.
waterw72
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
Bonjour,
Qu'entends-tu par "un peu plus/mieux découper cette classe"?
Pourquoi faire un constante avec le domaine? Je serai obligé de faire une class par domaine alors?
Pour les répertoires imap, cette class ne permet pas de créer de nouveau répertoire donc je n'ai pas
pensé à en lister plus.

Enfin, la présentation me permet de réduire le code dans mes pages html. Il faut choisir...

Merci de ton commentaire.
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
re,

"Pourquoi faire un constante avec le domaine? Je serai obligé de faire une class par domaine alors? "
=> moi je ne suis pas d'accord. Par définition, ce n'est pas une constante. Cela doit demeurer une propriété dynamique, MAIS que l'on peut setter.

Pour la présentation : si tu fais une classe output, basé par exemple sur un fichier de templating (xml ou autre), tu n'as plus de code dans tes pages html. ET on peut modifier l'apparence très facilement.
Ce n'est pas le cas ici.

Pour le découpage je laisse Garfield répondre, c'est son bin's ;-)
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
Je parlais de mis en constance car tu n'as pas de setter et donc ta propriété domaine ne peut a aucun moment changer donc inutile de la mettre en temps que propriété, CQFD. Je n'ai en tout cas pas voulu dire que ca DEVAIT etre une constante, dans ton cas, ca eviterai une manipulation non voulue.

Pour la séparation entre la présentation HTML et ta classe, c'est que si tu veux supprimer les tableaux pour les remplacer par autre chose, t'es obligé de modifier ta classe, ce qui ne doit jamais etre le cas.

Pour le découpage,

Je verrai à vu de nez 4 entités différentes.

- le serveur de mail (systeme de connexion)
- l'utilisateur du compte mail (permet de vérifier l'existence du compte et de vérifier aussi les params de connexion, gestion d'utilisateur etc.)
- un message : c'est une entité atomique, donc devrait quasi pouvoir etre traiter independament, voir peut etre un messageIterator (liste de message)
- une classe repertoire permettant la création, suppression de suppression, visualisation d'un répertoire de message

tu devrais peut etre/surement sortir ton utilisateur de ta classe et passer l'objet en reference au niveau du constructeur et/ou via un setter

# $u = new Utilisateur();
# $u->lire($id_user);
# $this->utilisateur = $u->getPseudo();
# $this->password = $u->getPassword();

public function setUtilisateur(Utilisateur $oUser){
$this->utilisateur = $oUser->getPseudo();
$this->password = $oUser->getPassword();
}
NicoWatt
Messages postés
74
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
18 janvier 2013
-
Hello à tous,

Juste une petite remarque sur l'ouverture d'un compte pop.
Ayant moi-même développé ce genre d'outil, je pense que tu n'as pas pris en compte les connexions SSL.
Par exemple avec cette classe je suis presque sûr que tu ne puisses ouvrir une boîte mail Gmail ni même Wanadoo.

Si qq veux des infos à ce sujet, tell me more ;)

Bon courrage et bonne journée.
cs_logarcon
Messages postés
44
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2008
-
bonjour,

y aurait-il par hasard moyen d'avoir un exemple d'utilisation ?

Merci
> cs_logarcon
Messages postés
44
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2008
-
Pareil pour moi, une explication sur l'utilisation me serait utile ! merci d'avance