123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- namespace Cron;
- use InvalidArgumentException;
- /**
- * CRON field factory implementing a flyweight factory
- * @link http://en.wikipedia.org/wiki/Cron
- */
- class FieldFactory
- {
- /**
- * @var array Cache of instantiated fields
- */
- private $fields = array();
- /**
- * Get an instance of a field object for a cron expression position
- *
- * @param int $position CRON expression position value to retrieve
- *
- * @return FieldInterface
- * @throws InvalidArgumentException if a position is not valid
- */
- public function getField($position)
- {
- if (!isset($this->fields[$position])) {
- switch ($position) {
- case 0:
- $this->fields[$position] = new MinutesField();
- break;
- case 1:
- $this->fields[$position] = new HoursField();
- break;
- case 2:
- $this->fields[$position] = new DayOfMonthField();
- break;
- case 3:
- $this->fields[$position] = new MonthField();
- break;
- case 4:
- $this->fields[$position] = new DayOfWeekField();
- break;
- default:
- throw new InvalidArgumentException(
- $position . ' is not a valid position'
- );
- }
- }
- return $this->fields[$position];
- }
- }
|