Date_Holidays
[ class tree: Date_Holidays ] [ index: Date_Holidays ] [ all elements ]

Source for file usingCompositeDriver.php

Documentation is available at usingCompositeDriver.php

  1. <?php
  2. /**
  3.  * Example how to use a composite driver to determine holidays from
  4.  * several combined drivers
  5.  *
  6.  * PHP Version 5
  7.  *
  8.  * @category Date
  9.  * @package  Date_Holidays
  10.  * @author   Carsten Lucke <luckec@tool-garage.de>
  11.  * @license  http://www.php.net/license/3_01.txt PHP License 3.0.1
  12.  * @link     http://pear.php.net/package/Date_Holidays
  13.  */
  14.  
  15. require_once 'Date/Holidays.php';
  16.  
  17. /**
  18.  * First thing to do is creating a Composite driver object
  19.  * and some other drivers.
  20.  *
  21.  * You must determine a valid driver-name.
  22.  * If you don't specify a locale, your system's locale will be used.
  23.  * If you don't specify a year, the current one will be used.
  24.  */
  25. $comp      Date_Holidays::factory('Composite');
  26. $germany03 Date_Holidays::factory('Germany'2003'en_EN');
  27. $germany   Date_Holidays::factory('Germany'2004'en_EN');
  28. $uno       Date_Holidays::factory('UNO'2004'en_EN');
  29. if (Date_Holidays::isError($comp||
  30.         Date_Holidays::isError($germany03||
  31.         Date_Holidays::isError($germany||
  32.         Date_Holidays::isError($uno)) {
  33.     die('Factory was unable to produce driver-object');
  34. }
  35.  
  36. /**
  37.  * Adding the drivers to the composite driver object
  38.  *
  39.  * For some methods of the composite driver the importance of
  40.  * the added drivers is relevant for the returned result.
  41.  * The rule of priority is pretty easy, the earlier you add a
  42.  * driver, the more important it is (First come, first serve).
  43.  */
  44. $comp->addDriver($germany03);
  45. $comp->addDriver($germany);
  46. $comp->addDriver($uno);
  47.  
  48. /**
  49.  * Drivers can be removed from the composite by using removeDriver()
  50.  */
  51. //$comp->removeDriver($germany03);
  52.  
  53. /**
  54.  * Now that you have created a driver, all the methods that Date_Holidays_Driver
  55.  * defines are available for usage. {@link Date_Holidays_Driver}
  56.  *
  57.  * However some of the methods won't do anything, like setYear() or getYear().
  58.  * You should execute those ones on a standalone driver.
  59.  */
  60.  
  61.  
  62. /**
  63.  * Date holidays uses an internal name for each holiday and many methods
  64.  * require one as a parameter.
  65.  * The following method returns an array with all available internal names.
  66.  *
  67.  * It returns the internal names of all drivers in the compound. Higher priorized
  68.  * drivers overwrite equal internal names of lower ones.
  69.  */
  70. $internalNames $comp->getInternalHolidayNames();
  71. print_r($internalNames);
  72.  
  73.  
  74. /**
  75.  * Let's retrieve holiday data for Easter.
  76.  *
  77.  * On success an object will be returned, that contains
  78.  * the data about the requested holiday.
  79.  *
  80.  * You may specify a locale that differs from the driver's one
  81.  * to get data in other languages for single method calls.
  82.  */
  83. $easter $comp->getHoliday('easter''de_DE');
  84. if (Date_Holidays::isError($easter)) {
  85.     print_r($easter->toArray());
  86. }
  87.  
  88. $restrict = array();
  89. $easter   $comp->getHolidayDates($restrict);
  90. echo '<pre>';
  91. //print_r($easter);
  92. echo '</pre>';
  93.  
  94. /**
  95.  * This methods checks whether a specific date is a holiday.
  96.  *
  97.  * Valid params for $date are a string (YYYY-MM-DD),
  98.  * a timestamp and a PEAR::Date object
  99.  */
  100. $holiday $comp->getHolidayForDate('2004-01-01''de_DE'true);
  101. if (Date_Holidays::isError($holiday&& is_null($holiday)) {
  102.     if (is_array($holiday)) {
  103.         for ($i = 0; $i count($holiday)$i++{
  104.             print_r($holiday[$i]->toArray());
  105.         }
  106.     else {
  107.         print_r($holiday->toArray());
  108.     }
  109. }
  110.  
  111.  
  112. /**
  113.  * As many driver may contain lots of holidays, most methods accept a param
  114.  * $restrict that allows you to limit the relevant holidays.
  115.  *
  116.  * If you don't specify $restrict, all holidays the driver knows will be processed.
  117.  *
  118.  * If the composite drivers contains two or more drivers with equal internal
  119.  * holiday names the one of the driver with the highest priority will be
  120.  * returned (the one who was added earliest).
  121.  */
  122. $restrict = array(
  123.     'goodFriday',
  124.     'easter',
  125.     'easterMonday',
  126.     'whitsun',
  127.     'whitMonday'
  128. );
  129. $titles $comp->getHolidayTitles($restrict'fr_FR');
  130. if (Date_Holidays::isError($titles)) {
  131.     print_r($titles);
  132. }
  133. ?>

Documentation generated on Tue, 22 Jan 2013 01:00:09 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.