NormalizeCommand

Validate and normalize a cron command.

Special fields like three letter weekdays, ranges and steps are substituted to a comma separated list of integers. Example: '2-4 10-40/10 * mar * fri' will be normalized to '2,4 10,20,30,40 * * 3 1,2'

Table of Contents

Methods

normalize()  : string
Main API method: Get the cron command and normalize it.
convertKeywordsToCronCommand()  : string
Accept special cron command keywords and convert to standard cron syntax.
convertRangeToListOfValues()  : string
Convert a range of integers to a list: 4-6 results in a string '4,5,6'
normalizeFields()  : string
Normalize cron command field to list of integers or *
normalizeIntegerField()  : string
Normalize integer field.
normalizeMonth()  : int
Accept a string representation or integer number of a month like 'jan', 'February', 01, ... and convert to normalized integer value 1 .. 12
normalizeMonthAndWeekday()  : string
Dispatcher method for normalizeMonth and normalizeWeekday
normalizeMonthAndWeekdayField()  : string
Normalize month field.
normalizeWeekday()  : int
Accept a string representation or integer number of a weekday like 'mon', 'Friday', 3, ... and convert to normalized integer value 1 .. 7
reduceListOfValuesByStepValue()  : string
Reduce a given list of values by step value.
splitFields()  : array<string|int, mixed>
Split a given cron command like '23 * * * *' to an array with five fields.

Methods

normalize()

Main API method: Get the cron command and normalize it.

public static normalize(string $cronCommand) : string

If no exception is thrown, the resulting cron command is validated and consists of five whitespace separated fields, which are either the letter '*' or a sorted, unique comma separated list of integers.

Parameters
$cronCommand : string

The cron command to normalize

Tags
throws
InvalidArgumentException

cron command is invalid or out of bounds

Return values
string —

Normalized cron command

convertKeywordsToCronCommand()

Accept special cron command keywords and convert to standard cron syntax.

protected static convertKeywordsToCronCommand(string $cronCommand) : string

Allowed keywords: @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly

Parameters
$cronCommand : string

Cron command

Return values
string —

Normalized cron command if keyword was found, else unchanged cron command

convertRangeToListOfValues()

Convert a range of integers to a list: 4-6 results in a string '4,5,6'

protected static convertRangeToListOfValues(string $range) : string
Parameters
$range : string

Integer-integer

Tags
throws
InvalidArgumentException

If range can not be converted to list

Return values
string

normalizeFields()

Normalize cron command field to list of integers or *

protected static normalizeFields(string $cronCommand) : string
Parameters
$cronCommand : string

cron command

Return values
string —

Normalized cron command

normalizeIntegerField()

Normalize integer field.

protected static normalizeIntegerField(string $expression[, int $lowerBound = 0 ][, int $upperBound = 59 ]) : string
Parameters
$expression : string

Expression

$lowerBound : int = 0

Lower limit of result list

$upperBound : int = 59

Upper limit of result list

Tags
throws
InvalidArgumentException

If field is invalid or out of bounds

Return values
string —

Normalized expression

normalizeMonth()

Accept a string representation or integer number of a month like 'jan', 'February', 01, ... and convert to normalized integer value 1 .. 12

protected static normalizeMonth(string $month) : int
Parameters
$month : string

Month representation

Tags
throws
InvalidArgumentException

If month string can not be converted to integer

Return values
int —

month integer representation between 1 and 12

normalizeMonthAndWeekday()

Dispatcher method for normalizeMonth and normalizeWeekday

protected static normalizeMonthAndWeekday(string $expression[, bool $isMonth = true ]) : string
Parameters
$expression : string

Month or weekday to be normalized

$isMonth : bool = true

TRUE if a month is handled, FALSE for weekday

Return values
string —

normalized month or weekday

normalizeMonthAndWeekdayField()

Normalize month field.

protected static normalizeMonthAndWeekdayField(string $expression[, bool $isMonthField = true ]) : string
Parameters
$expression : string

Month field expression

$isMonthField : bool = true

TRUE if month field is handled, FALSE for weekday field

Return values
string —

Normalized expression

normalizeWeekday()

Accept a string representation or integer number of a weekday like 'mon', 'Friday', 3, ... and convert to normalized integer value 1 .. 7

protected static normalizeWeekday(string $weekday) : int
Parameters
$weekday : string

Weekday representation

Tags
throws
InvalidArgumentException

If weekday string can not be converted

Return values
int —

weekday integer representation between 1 and 7

reduceListOfValuesByStepValue()

Reduce a given list of values by step value.

protected static reduceListOfValuesByStepValue(string $stepExpression) : string

Following a range with ``/'' specifies skips of the number's value through the range. 1-5/2 -> 1,3,5 2-10/3 -> 2,5,8

Parameters
$stepExpression : string

Step value expression

Tags
throws
InvalidArgumentException

if step value is invalid or if resulting list is empty

Return values
string —

Comma separated list of valid values

splitFields()

Split a given cron command like '23 * * * *' to an array with five fields.

protected static splitFields(string $cronCommand) : array<string|int, mixed>
Parameters
$cronCommand : string

cron command

Tags
throws
InvalidArgumentException

If splitted array does not contain five entries

Return values
array<string|int, mixed>
On this page

Search results