Classe calendrier optimisée poo

5/5 (16 avis)

Vue 8 707 fois - Téléchargée 612 fois

Description

Reprise d'un code source existant sur ce site à l'adresse http://www.phpcs.com/codes/CLASSE-PHP-MINI-CALENDRIER-AVEC-12-MOIS-AFFICHES_34299.aspx .
Réécriture objet clean et optimisé pour une utilisation rapide et un découpage affiche/traitement.

Je remercies l'auteur du premier code et l'invites à me contacter afin que l'on mette sur pied un code éventuellement plus évolué ;-)

NICOWEB

Source / Exemple :


<?
/*

  • 09/06/2006 16:18pm
  • include/Agenda.class.php
  • fichier de classe permettant de gérer les fonctionnalités de l'agenda
  • /
class Agenda { /* tableaux */ var $t_listeMoisFr = Array(1 => "Janvier",2 => "Février",3 => "Mars",4 => "Avril",5 => "Mai",6 => "Juin",7 => "Juillet",8 => "Août", 9 => "Septembre",10 => "Octobre", 11 => "Novembre",12 => "Décembre"); var $t_prop = array("convertDate" => "", "premierJour" => 0, "nombreJour" => 0, "anneeRec" => 0, "moisRec" => 0); /* variables dites de chaine */ var $debutPremiereLigne; var $finPremiereLigne; var $autreLigne; function Agenda($choixAnnee,$choixMois) { if ($choixAnnee != "") $this->t_prop['anneeRec'] = $choixAnnee; if ($choixMois != "") $this->t_prop['moisRec'] = $choixMois; $this->t_prop['convertDate'] = gregoriantojd($this->t_prop['moisRec'],1,$this->t_prop['anneeRec']); $this->t_prop['premierJour'] = jddayofweek($this->t_prop['convertDate'],3)-1; $this->t_prop['nombreJour'] = cal_days_in_month(1,$this->t_prop['moisRec'],$this->t_prop['anneeRec']); if ($this->t_prop['premierJour'] == -1) $this->t_prop['premierJour'] = 6; } /*
  • boolean
  • afficherAgenda ( array t_propriete )
  • méthode qui permet d'afficher à partir d'un tableau de propriétés spécifiques à un agenda/calendrier (ndr : ts de limites dans le temps) d'afficher le tableau de calendrier
  • /
function afficherAgenda() { for($i=0;$i< $this->t_prop['premierJour'];$i++){ $this->debutPremiereLigne .= "<td>&nbsp;</td>";} for($i=0;$i<(7-$this->t_prop['premierJour']);$i++){ $this->finPremiereLigne .= "<td>".($i+1)."</td>";} $i2=0; for($i = (7-$this->t_prop['premierJour']);$i < $this->t_prop['nombreJour'];$i++){ if($i2 == 7) { $this->autreLigne .= "</tr><tr>"; $i2 = 0; } $this->autreLigne .= "<td>".($i+1)."</td>"; $i2++; } $this->chaine_courante .= "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n <tr> <td colspan=\"7\">[ <a href=\"?month=".$this->t_prop['moisRec']."\" target=\"_self\">".$this->t_listeMoisFr[$this->t_prop['moisRec']]."</a> ]</td> </tr>\n <tr> <td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td> </tr>\n "; $this->chaine_courante .= "<tr>".$this->debutPremiereLigne.$this->finPremiereLigne."</tr>\n"; $this->chaine_courante .= "<tr>".$this->autreLigne."</tr>\n"; $this->chaine_courante .= "</table>"; if($this->chaine_courante == "") return false; else return $chaine_courante; } } $ag = new Agenda(date("m",time()),date("Y",time())); print($ag->afficherAgenda()); ?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
20 juin 2006 à 13:44
Non perso je trouve qu'il est bien ce code... c'est juste qu'un fonction aurait suffit plutot qu'un classe... .. .

et puis bon faudra m'excuser mais les mecs qui font encore des fonctions à l'heure actuelle c'est qu'ils ne savent pas dans quel objet les mettre


Ou alors tout simplement que ça ne sert à rien de mettre ça en classe... code orienter objet ne veut pas dire abandonner les fonction et faire des classe pour tout même pour un echo... les classes et les fonction sont complémentaire... elles n'ont pas le même but et la même utilitée... l'instanciation d'un objet coute en performance ça ne sert donc à rien d'en mettre à toutes les sauces là ou une fonction suffit... .. . ;o)

@ tchaOo°
ganjamannicoweb Messages postés 5 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 21 mai 2008
19 juin 2006 à 22:42
et bien dire que je pensai rendre service en mettant à jour ce code :-(

be merci les gars c clair que je serai tenté de vouloir me prendre à aider ceux pour qui interface, classe, objet ne signifie pas encore grand chose....

et puis bon faudra m'excuser mais les mecs qui font encore des fonctions à l'heure actuelle c'est qu'ils ne savent pas dans quel objet les mettre (ndr : comprendre => come to back dans le code les gars trop lol)

bon sur ce ,
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
13 juin 2006 à 12:31
bah oui, c'est bien ce que je dis... une simple fonction aurait suffit...
il aurait pu faire une class date par exemple, même si ça n'aurait pas eu grand interet (et ça n'aurait pas apporté l'héritage, mais ça aurait été mieux...)... pour le reste, bah passer à php5, c'est important ;)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 juin 2006 à 12:20
Hu ? J'en entend des belles tous les jours :)

"étant donné la forme en classe et l'utilisation de méthodes n'utilisant pas de echo ou print afin de garantir une stabilité des headers je penses qu'il est très difficile de contester que ce script est orienté objet."
Reste que l'expression "orientée objet" est un peu vague dans ton cas moi je trouve :)
Et je peux très bien utiliser du echo() ou du print() ou du header() ou du ce_que_tu_veux() dans une classe. Personne a dit que mettre du html dans une classe était malsain !

"entre nous, ça reste de l'objet de base" Appelons ca comme ca alors :)
"sans interface" Impossible, il tourne sous PHP4 :o
"sans héritage" Jvois pas comment il va pouvoir s'en sortir avec une classe comme ca pour faire de l'héritage !
"sans private, sans public" Pareil, PHP4 power ! =)
"sans surcharges" La aussi, jvois pas comment !
"ici, la class n'est qu'une grosse boiboite..." Oui, une grosse fonction aurait tout fait aussi bien :)

Ici, la classe tel-quel ne vaut pas grand chose.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
13 juin 2006 à 10:02
entre nous, ça reste de l'objet de base, sans interface, sans héritage, sans private, sans public, sans surcharges, bref, pas super super non plus... ici, la class n'est qu'une grosse boiboite...
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.