Root/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?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 ]; } } |