Root/
<?php namespace Cron; /** * CRON field factory implementing a flyweight factory */ 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 ; case 5: $this ->fields[ $position ] = new YearField(); break ; default : throw new \InvalidArgumentException( $position . ' is not a valid position' ); } } return $this ->fields[ $position ]; } } |