/** * Obtains an instance of {@code WeekFields} from the first day-of-week and minimal days. * <p> * The first day-of-week defines the ISO {@code DayOfWeek} that is day 1 of the week. * The minimal number of days in the first week defines how many days must be present * in a month or year, starting from the first day-of-week, before the week is counted * as the first week. A value of 1 will count the first day of the month or year as part * of the first week, whereas a value of 7 will require the whole seven days to be in * the new month or year. * <p> * WeekFields instances are singletons; for each unique combination * of {@code firstDayOfWeek} and {@code minimalDaysInFirstWeek} the * the same instance will be returned. * * @param DayOfWeek $firstDayOfWeek the first day of the week, not null * @param int $minimalDaysInFirstWeek the minimal number of days in the first week, from 1 to 7 * @return WeekFields the week-definition, not null * @throws IllegalArgumentException if the minimal days value is less than one * or greater than 7 */ public static function of(DayOfWeek $firstDayOfWeek, $minimalDaysInFirstWeek) { $key = $firstDayOfWeek->__toString() . $minimalDaysInFirstWeek; $rules = @self::$CACHE[$key]; if ($rules === null) { $rules = new WeekFields($firstDayOfWeek, $minimalDaysInFirstWeek); self::$CACHE[$key] = $rules; $rules = self::$CACHE[$key]; } return $rules; }