Tour d'horizon du package --
Tour d'horizon des classes de Calendar
Tour d'horizon du package
Lorsque vous travaillez avec PEAR::Calendar, il y'a un total de 12 classes (publiques)
disponibles pour vous aider à résoudre les problèmes que vous
rencontrez. On peut les grouper en classes de dates, dates tabulaires, validation et
décorations.
Classes de dates
Elles fournissent une représentation de toutes les unités humaines basiques
de dates. Elles héritent toutes de Calendar et
fournissent les méthodes définies
par la suite :
Calendar_Year - représente une
année et peut contruire des objets Calendar_Month,
Calendar_Month_Weekdays et
Calendar_Month_Weeks.
Inclure avec :
require_once 'Calendar/Year.php';
Calendar_Month - représente un mois et
peut construire des objets Calendar_Day.
Inclure avec :
require_once 'Calendar/Month.php';
Calendar_Day - représente un jour et peut
contstruire des objets Calendar_Hour.
Inclure avec :
require_once 'Calendar/Day.php';
Calendar_Hour - représente une heure et
peut construire des objets Calendar_Minute.
Inclure avec :
require_once 'Calendar/Hour.php';
Calendar_Minute - représente une minute et
peut construire des objets Calendar_Second.
Inclure avec :
require_once 'Calendar/Minute.php';
Calendar_Second - représente une seconde
et ne peut construire aucun objet.
Inclure avec :
require_once 'Calendar/Second.php';
Classes de Dates Tabulaires
Permet de construire des calendriers au format tabulaire. Ce sont toutes des sous
classes de Calendar, elles disposent donc des mêmes
méthodes.
Calendar_Month_Weekdays - construit des objets
Calendar_Day en réglant les états
isFirst(), isLast() et
isEmpty() afin d'afficher un mois sous forme tabulaire.
Inclure avec :
require_once 'Calendar/Month/Weekdays.php';
Calendar_Month_Weeks - construit des objets
Calendar_Week en représentant un mois en fonction
des semaines tabulaires qu'il contient (consultez la FAQ pour la représentation
des semaines).
Inclure avec :
require_once 'Calendar/Month/Weeks.php';
Calendar_Week - construit 7 objets
Calendar_Day. S'ils sont étendus par un objet
Calendar_Month_Weeks, ils représentent une semaine tabulaire d'un mois et
ils réglent l' état isEmpty() si nécessaire pour les jours
appropriés.
Inclure avec :
require_once 'Calendar/Week.php';
Classes de Validation
Permet de valider des dates. Calendar fournit les
méthodes
isValid() afin de faire une vérification simple sur n'importe
quelle date et getValidator() qui renvoie une instance de
Calendar_Validator pour une validation plus fine.
Calendar_Validator - n'est pas instancié
automatiquement dans votre code (vous devez inclure / le créer). Pour le
créer utilisez la méthode
Calendar::getValidator() que vous
pouvez utiliser sur n'importe quelle sous classe de Calendar.
Cette méthode permet d'avoir des informations de validité
détaillées et ainsi de trouver la source de l'erreur
pour des objets de Date ou de Date Tabulaire.
Calendar_Validation_Error - représente une
erreur de validation, fournit des méthodes pour détermnier la source de
l'erreur. Les méthodes disponibles sont
getUnit() (renvoie Year ou Month),
getValue() (la valeur de l'erreur),
getMessage() (le message d'erreur de validation)
et toString() qui renvoie une combinaison des trois
méthodes précédentes.
Les messages d'erreur de validation sont en Anglais par défaut. Il sont
définis par les constantes
CALENDAR_VALUE_TOOSMALL et
CALENDAR_VALUE_TOOLARGE qui peuvent être
redéfinies dans votre code.
Les Décorateurs
Fournit un mécanisme permettant d'ajouter des fonctionnalités aux
principaux objets Calendar (les sous classes de
Calendar) sans avoir besoin de les étendre (et prendre
le risque d'écraser des champs
accidentellement). Pour créer un décorateur, vous devez passer un objet
Calendar au constructeur.
Vous pourrez alors faire des appels au décorateur au lieu de les faire sur l'objet
d'origine.
Cela vous permettra de réécrire les méthodes de Calendar, ajouter
de nouvelles méthodes ou même
appliquer des décorateurs multiples au même objet Calendar. Les
décorateurs peuvent être injecté
(via une sélection ou le décorateur
Calendar_Decorator_Wrapper )
dans la boucle générant le calendrier afin de modifier son contenu
(pour par exemple convertir des valeurs numériques en textes : 1 ->
janvier).
PEAR::Calendar fournit des implémentations de décorateurs afin d'effectuer
les tâches communes. Celles-ci
ne correspondront pas aux besoins de tous et sont fournies en tant que code optionnel
(afin de ne pas détériorer les performances si vous ne les utilisez pas).
Calendar_Decorator - C'est la classe de base des
décorateurs. Etendez cette classe
pour créer vos propres décorateurs. Elle fournit la même API que la
classe Calendar qu'elle agrémente et renvoie
simplement les appels vers elle. Exemple;
require_once 'Calendar/Decorator.php';
class ChristmasDecorator extends Calendar_Decorator
{
function ChristmasDecorator(&$Calendar)
{
parent::Calendar_Decorator($Calendar);
}
// Quelques méthodes ajoutées
function getDaysToChristmas()
{
$today = parent::thisDay(true);
$Christmas = new Calendar_Day(date('Y'), 12, 25);
$xmasday = $Christmas->thisDay(TRUE);
$diff = $xmasday - $today;
if ($diff < 0) {
$NextChristmas = new Calendar_Day($Christmas->nextYear(), 12, 25);
$nextxmasday = $NextChristmas->thisDay(true);
$diff = $today - $nextxmasday;
}
return ($diff / 86400);
}
}
Calendar_Decorator_Uri - Fournit un
décorateur permettant de générer des URLs (Par exemple prec. /
suivant).
Inclure avec :
require_once 'Calendar/Decorator/Uri.php';
Calendar_Decorator_Textual - permet d'obtenir des
mois et jours sous forme de textes à partir d'un objet calendar.
Inclure avec :
require_once 'Calendar/Decorator/Textual.php';
Calendar_Decorator_Wrapper - permet d'ajouter
des décorateurs aux fils de l'objet Calendar que vous utilisez. Le fils sera
englobé par le décorateur spécifié au moment de l'appel
à fetch() ou à fetchAll(),
après un appel à build().