upgrade idiorm to php8.1-patched version (aaronpk/idiorm)

This commit is contained in:
Andrew Dolgov
2022-07-12 22:26:21 +03:00
parent 4b61618920
commit 80d3db1dcf
189 changed files with 17077 additions and 12739 deletions

View File

@@ -9,11 +9,11 @@ use Safe\Exceptions\DatetimeException;
*
* @param string $format Format accepted by DateTime::createFromFormat.
* @param string $datetime String representing the date/time.
* @return array Returns associative array with detailed info about given date/time.
* @return array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type: int|bool, zone: int|bool, is_dst: bool, tz_abbr: string, tz_id: string, relative: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday: int, weekdays: int, first_day_of_month: bool, last_day_of_month: bool}}|null Returns associative array with detailed info about given date/time.
* @throws DatetimeException
*
*/
function date_parse_from_format(string $format, string $datetime): array
function date_parse_from_format(string $format, string $datetime): ?array
{
error_clear_last();
$result = \date_parse_from_format($format, $datetime);
@@ -25,16 +25,30 @@ function date_parse_from_format(string $format, string $datetime): array
/**
* date_parse parses the given
* datetime string according to the same rules as
* strtotime and
* DateTimeImmutable::__construct. Instead of returning a
* Unix timestamp (with strtotime) or a
* DateTimeImmutable object (with
* DateTimeImmutable::__construct, it returns an
* associative array with the information that it could detect in the given
* datetime string.
*
* If no information about a certain group of elements can be found, these
* array elements will be set to FALSE or are missing. If needed for
* constructing a timestamp or DateTimeImmutable object from
* the same datetime string, more fields can be set to
* a non-FALSE value. See the examples for cases where that happens.
*
* @param string $datetime Date/time in format accepted by
* DateTimeImmutable::__construct.
* @return array Returns array with information about the parsed date/time
* @return array{year: int|false, month: int|false, day: int|false, hour: int|false, minute: int|false, second: int|false, fraction: float|false, warning_count: int, warnings: string[], error_count: int, errors: string[], is_localtime: bool, zone_type: int|bool, zone: int|bool, is_dst: bool, tz_abbr: string, tz_id: string, relative: array{year: int, month: int, day: int, hour: int, minute: int, second: int, weekday: int, weekdays: int, first_day_of_month: bool, last_day_of_month: bool}}|null Returns array with information about the parsed date/time
* on success.
* @throws DatetimeException
*
*/
function date_parse(string $datetime): array
function date_parse(string $datetime): ?array
{
error_clear_last();
$result = \date_parse($datetime);
@@ -180,7 +194,7 @@ function date_sun_info(int $timestamp, float $latitude, float $longitude): array
*
*
* SUNFUNCS_RET_TIMESTAMP
* returns the result as integer (timestamp)
* returns the result as int (timestamp)
* 1095034606
*
*
@@ -233,10 +247,10 @@ function date_sun_info(int $timestamp, float $latitude, float $longitude): array
* @throws DatetimeException
*
*/
function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = 0)
function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = null)
{
error_clear_last();
if ($utcOffset !== 0) {
if ($utcOffset !== null) {
$result = \date_sunrise($timestamp, $returnFormat, $latitude, $longitude, $zenith, $utcOffset);
} elseif ($zenith !== null) {
$result = \date_sunrise($timestamp, $returnFormat, $latitude, $longitude, $zenith);
@@ -283,7 +297,7 @@ function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, f
*
*
* SUNFUNCS_RET_TIMESTAMP
* returns the result as integer (timestamp)
* returns the result as int (timestamp)
* 1095034606
*
*
@@ -336,10 +350,10 @@ function date_sunrise(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, f
* @throws DatetimeException
*
*/
function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = 0)
function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, float $latitude = null, float $longitude = null, float $zenith = null, float $utcOffset = null)
{
error_clear_last();
if ($utcOffset !== 0) {
if ($utcOffset !== null) {
$result = \date_sunset($timestamp, $returnFormat, $latitude, $longitude, $zenith, $utcOffset);
} elseif ($zenith !== null) {
$result = \date_sunset($timestamp, $returnFormat, $latitude, $longitude, $zenith);
@@ -359,14 +373,19 @@ function date_sunset(int $timestamp, int $returnFormat = SUNFUNCS_RET_STRING, fl
/**
* Returns a string formatted according to the given format string using the
* given integer timestamp or the current time
* if no timestamp is given. In other words, timestamp
* given integer timestamp (Unix timestamp) or the current time
* if no timestamp is given. In other words, timestamp
* is optional and defaults to the value of time.
*
* Unix timestamps do not handle timezones. Use the
* DateTimeImmutable class, and its
* DateTimeInterface::format formatting method to
* format date/time information with a timezone attached.
*
* @param string $format Format accepted by DateTimeInterface::format.
* @param int $timestamp The optional timestamp parameter is an
* integer Unix timestamp that defaults to the current
* local time if a timestamp is not given. In other
* int Unix timestamp that defaults to the current
* local time if timestamp is omitted or NULL. In other
* words, it defaults to the value of time.
* @return string Returns a formatted date string. If a non-numeric value is used for
* timestamp, FALSE is returned and an
@@ -390,28 +409,219 @@ function date(string $format, int $timestamp = null): string
/**
* Identical to the date function except that
* the time returned is Greenwich Mean Time (GMT).
* Identical to mktime except the passed parameters represents a
* GMT date. gmmktime internally uses mktime
* so only times valid in derived local time can be used.
*
* @param string $format The format of the outputted date string. See the formatting
* options for the date function.
* @param int $timestamp The optional timestamp parameter is an
* integer Unix timestamp that defaults to the current
* local time if a timestamp is not given. In other
* words, it defaults to the value of time.
* @return string Returns a formatted date string. If a non-numeric value is used for
* timestamp, FALSE is returned and an
* E_WARNING level error is emitted.
* Like mktime, arguments may be left out in order
* from right to left, with any omitted arguments being set to the
* current corresponding GMT value.
*
* @param int $hour The number of the hour relative to the start of the day determined by
* month, day and year.
* Negative values reference the hour before midnight of the day in question.
* Values greater than 23 reference the appropriate hour in the following day(s).
* @param int $minute The number of the minute relative to the start of the hour.
* Negative values reference the minute in the previous hour.
* Values greater than 59 reference the appropriate minute in the following hour(s).
* @param int $second The number of seconds relative to the start of the minute.
* Negative values reference the second in the previous minute.
* Values greater than 59 reference the appropriate second in the following minute(s).
* @param int $month The number of the month relative to the end of the previous year.
* Values 1 to 12 reference the normal calendar months of the year in question.
* Values less than 1 (including negative values) reference the months in the previous year in reverse order, so 0 is December, -1 is November, etc.
* Values greater than 12 reference the appropriate month in the following year(s).
* @param int $day The number of the day relative to the end of the previous month.
* Values 1 to 28, 29, 30 or 31 (depending upon the month) reference the normal days in the relevant month.
* Values less than 1 (including negative values) reference the days in the previous month, so 0 is the last day of the previous month, -1 is the day before that, etc.
* Values greater than the number of days in the relevant month reference the appropriate day in the following month(s).
* @param int $year The year
* @return int Returns a int Unix timestamp on success.
* @throws DatetimeException
*
*/
function gmdate(string $format, int $timestamp = null): string
function gmmktime(int $hour, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int
{
error_clear_last();
if ($year !== null) {
$result = \gmmktime($hour, $minute, $second, $month, $day, $year);
} elseif ($day !== null) {
$result = \gmmktime($hour, $minute, $second, $month, $day);
} elseif ($month !== null) {
$result = \gmmktime($hour, $minute, $second, $month);
} elseif ($second !== null) {
$result = \gmmktime($hour, $minute, $second);
} elseif ($minute !== null) {
$result = \gmmktime($hour, $minute);
} else {
$result = \gmmktime($hour);
}
if ($result === false) {
throw DatetimeException::createFromPhpError();
}
return $result;
}
/**
* Behaves the same as strftime except that the
* time returned is Greenwich Mean Time (GMT). For example, when run
* in Eastern Standard Time (GMT -0500), the first line below prints
* "Dec 31 1998 20:00:00", while the second prints "Jan 01 1999
* 01:00:00".
*
* @param string $format See description in strftime.
* @param int $timestamp The optional timestamp parameter is an
* int Unix timestamp that defaults to the current
* local time if timestamp is omitted or NULL. In other
* words, it defaults to the value of time.
* @return string Returns a string formatted according to the given format string
* using the given timestamp or the current
* local time if no timestamp is given. Month and weekday names and
* other language dependent strings respect the current locale set
* with setlocale.
* On failure, FALSE is returned.
* @throws DatetimeException
*
*/
function gmstrftime(string $format, int $timestamp = null): string
{
error_clear_last();
if ($timestamp !== null) {
$result = \gmdate($format, $timestamp);
$result = \gmstrftime($format, $timestamp);
} else {
$result = \gmdate($format);
$result = \gmstrftime($format);
}
if ($result === false) {
throw DatetimeException::createFromPhpError();
}
return $result;
}
/**
* Returns a number formatted according to the given format string using the
* given integer timestamp or the current local time
* if no timestamp is given. In other words, timestamp
* is optional and defaults to the value of time.
*
* Unlike the function date, idate
* accepts just one char in the format parameter.
*
* @param string $format
* The following characters are recognized in the
* format parameter string
*
*
*
* format character
* Description
*
*
*
*
* B
* Swatch Beat/Internet Time
*
*
* d
* Day of the month
*
*
* h
* Hour (12 hour format)
*
*
* H
* Hour (24 hour format)
*
*
* i
* Minutes
*
*
* I (uppercase i)
* returns 1 if DST is activated,
* 0 otherwise
*
*
* L (uppercase l)
* returns 1 for leap year,
* 0 otherwise
*
*
* m
* Month number
*
*
* N
* ISO-8601 day of the week (1 for Monday
* through 7 for Sunday)
*
*
* o
* ISO-8601 year (4 digits)
*
*
* s
* Seconds
*
*
* t
* Days in current month
*
*
* U
* Seconds since the Unix Epoch - January 1 1970 00:00:00 UTC -
* this is the same as time
*
*
* w
* Day of the week (0 on Sunday)
*
*
* W
* ISO-8601 week number of year, weeks starting on
* Monday
*
*
* y
* Year (1 or 2 digits - check note below)
*
*
* Y
* Year (4 digits)
*
*
* z
* Day of the year
*
*
* Z
* Timezone offset in seconds
*
*
*
*
* @param int $timestamp The optional timestamp parameter is an
* int Unix timestamp that defaults to the current
* local time if timestamp is omitted or NULL. In other
* words, it defaults to the value of time.
* @return int Returns an int on success.
*
* As idate always returns an int and
* as they can't start with a "0", idate may return
* fewer digits than you would expect. See the example below.
* @throws DatetimeException
*
*/
function idate(string $format, int $timestamp = null): int
{
error_clear_last();
if ($timestamp !== null) {
$result = \idate($format, $timestamp);
} else {
$result = \idate($format);
}
if ($result === false) {
throw DatetimeException::createFromPhpError();
@@ -452,16 +662,14 @@ function gmdate(string $format, int $timestamp = null): string
* with values between 0-69 mapping to 2000-2069 and 70-100 to
* 1970-2000. On systems where time_t is a 32bit signed integer, as
* most common today, the valid range for year
* is somewhere between 1901 and 2038. However, before PHP 5.1.0 this
* range was limited from 1970 to 2038 on some systems (e.g. Windows).
* is somewhere between 1901 and 2038.
* @return int mktime returns the Unix timestamp of the arguments
* given.
* If the arguments are invalid, the function returns FALSE (before PHP 5.1
* it returned -1).
* If the arguments are invalid, the function returns FALSE.
* @throws DatetimeException
*
*/
function mktime(int $hour = null, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int
function mktime(int $hour, int $minute = null, int $second = null, int $month = null, int $day = null, int $year = null): int
{
error_clear_last();
if ($year !== null) {
@@ -474,10 +682,336 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m
$result = \mktime($hour, $minute, $second);
} elseif ($minute !== null) {
$result = \mktime($hour, $minute);
} elseif ($hour !== null) {
$result = \mktime($hour);
} else {
$result = \mktime();
$result = \mktime($hour);
}
if ($result === false) {
throw DatetimeException::createFromPhpError();
}
return $result;
}
/**
* Format the time and/or date according to locale settings. Month and weekday
* names and other language-dependent strings respect the current locale set
* with setlocale.
*
* Not all conversion specifiers may be supported by your C library, in which
* case they will not be supported by PHP's strftime.
* Additionally, not all platforms support negative timestamps, so your
* date range may be limited to no earlier than the Unix epoch. This means that
* %e, %T, %R and, %D (and possibly others) - as well as dates prior to
* Jan 1, 1970 - will not work on Windows, some Linux
* distributions, and a few other operating systems. For Windows systems, a
* complete overview of supported conversion specifiers can be found at
* MSDN.
*
* @param string $format
* The following characters are recognized in the
* format parameter string
*
*
*
* format
* Description
* Example returned values
*
*
*
*
* Day
* ---
* ---
*
*
* %a
* An abbreviated textual representation of the day
* Sun through Sat
*
*
* %A
* A full textual representation of the day
* Sunday through Saturday
*
*
* %d
* Two-digit day of the month (with leading zeros)
* 01 to 31
*
*
* %e
*
* Day of the month, with a space preceding single digits. Not
* implemented as described on Windows. See below for more information.
*
* 1 to 31
*
*
* %j
* Day of the year, 3 digits with leading zeros
* 001 to 366
*
*
* %u
* ISO-8601 numeric representation of the day of the week
* 1 (for Monday) through 7 (for Sunday)
*
*
* %w
* Numeric representation of the day of the week
* 0 (for Sunday) through 6 (for Saturday)
*
*
* Week
* ---
* ---
*
*
* %U
* Week number of the given year, starting with the first
* Sunday as the first week
* 13 (for the 13th full week of the year)
*
*
* %V
* ISO-8601:1988 week number of the given year, starting with
* the first week of the year with at least 4 weekdays, with Monday
* being the start of the week
* 01 through 53 (where 53
* accounts for an overlapping week)
*
*
* %W
* A numeric representation of the week of the year, starting
* with the first Monday as the first week
* 46 (for the 46th week of the year beginning
* with a Monday)
*
*
* Month
* ---
* ---
*
*
* %b
* Abbreviated month name, based on the locale
* Jan through Dec
*
*
* %B
* Full month name, based on the locale
* January through December
*
*
* %h
* Abbreviated month name, based on the locale (an alias of %b)
* Jan through Dec
*
*
* %m
* Two digit representation of the month
* 01 (for January) through 12 (for December)
*
*
* Year
* ---
* ---
*
*
* %C
* Two digit representation of the century (year divided by 100, truncated to an integer)
* 19 for the 20th Century
*
*
* %g
* Two digit representation of the year going by ISO-8601:1988 standards (see %V)
* Example: 09 for the week of January 6, 2009
*
*
* %G
* The full four-digit version of %g
* Example: 2008 for the week of January 3, 2009
*
*
* %y
* Two digit representation of the year
* Example: 09 for 2009, 79 for 1979
*
*
* %Y
* Four digit representation for the year
* Example: 2038
*
*
* Time
* ---
* ---
*
*
* %H
* Two digit representation of the hour in 24-hour format
* 00 through 23
*
*
* %k
* Hour in 24-hour format, with a space preceding single digits
* 0 through 23
*
*
* %I
* Two digit representation of the hour in 12-hour format
* 01 through 12
*
*
* %l (lower-case 'L')
* Hour in 12-hour format, with a space preceding single digits
* 1 through 12
*
*
* %M
* Two digit representation of the minute
* 00 through 59
*
*
* %p
* UPPER-CASE 'AM' or 'PM' based on the given time
* Example: AM for 00:31,
* PM for 22:23. The exact result depends on the
* Operating System, and they can also return lower-case variants, or
* variants with dots (such as a.m.).
*
*
* %P
* lower-case 'am' or 'pm' based on the given time
* Example: am for 00:31,
* pm for 22:23. Not supported by all Operating
* Systems.
*
*
* %r
* Same as "%I:%M:%S %p"
* Example: 09:34:17 PM for 21:34:17
*
*
* %R
* Same as "%H:%M"
* Example: 00:35 for 12:35 AM, 16:44 for 4:44 PM
*
*
* %S
* Two digit representation of the second
* 00 through 59
*
*
* %T
* Same as "%H:%M:%S"
* Example: 21:34:17 for 09:34:17 PM
*
*
* %X
* Preferred time representation based on locale, without the date
* Example: 03:59:16 or 15:59:16
*
*
* %z
* The time zone offset. Not implemented as described on
* Windows. See below for more information.
* Example: -0500 for US Eastern Time
*
*
* %Z
* The time zone abbreviation. Not implemented as described on
* Windows. See below for more information.
* Example: EST for Eastern Time
*
*
* Time and Date Stamps
* ---
* ---
*
*
* %c
* Preferred date and time stamp based on locale
* Example: Tue Feb 5 00:45:10 2009 for
* February 5, 2009 at 12:45:10 AM
*
*
* %D
* Same as "%m/%d/%y"
* Example: 02/05/09 for February 5, 2009
*
*
* %F
* Same as "%Y-%m-%d" (commonly used in database datestamps)
* Example: 2009-02-05 for February 5, 2009
*
*
* %s
* Unix Epoch Time timestamp (same as the time
* function)
* Example: 305815200 for September 10, 1979 08:40:00 AM
*
*
* %x
* Preferred date representation based on locale, without the time
* Example: 02/05/09 for February 5, 2009
*
*
* Miscellaneous
* ---
* ---
*
*
* %n
* A newline character ("\n")
* ---
*
*
* %t
* A Tab character ("\t")
* ---
*
*
* %%
* A literal percentage character ("%")
* ---
*
*
*
*
*
* Windows only:
*
* The %e modifier is not supported in the Windows
* implementation of this function. To achieve this value, the
* %#d modifier can be used instead. The example below
* illustrates how to write a cross platform compatible function.
*
* The %z and %Z modifiers both
* return the time zone name instead of the offset or abbreviation.
* @param int $timestamp The optional timestamp parameter is an
* int Unix timestamp that defaults to the current
* local time if timestamp is omitted or NULL. In other
* words, it defaults to the value of time.
* @return string Returns a string formatted according format
* using the given timestamp or the current
* local time if no timestamp is given. Month and weekday names and
* other language-dependent strings respect the current locale set
* with setlocale.
* The function returns FALSE if format is empty, contains unsupported
* conversion specifiers, or if the length of the returned string would be greater than
* 4095.
* @throws DatetimeException
*
*/
function strftime(string $format, int $timestamp = null): string
{
error_clear_last();
if ($timestamp !== null) {
$result = \strftime($format, $timestamp);
} else {
$result = \strftime($format);
}
if ($result === false) {
throw DatetimeException::createFromPhpError();
@@ -488,13 +1022,13 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m
/**
* strptime returns an array with the
* date parsed.
* timestamp parsed.
*
* Month and weekday names and other language dependent strings respect the
* current locale set with setlocale (LC_TIME).
*
* @param string $date The string to parse (e.g. returned from strftime).
* @param string $format The format used in date (e.g. the same as
* @param string $timestamp The string to parse (e.g. returned from strftime).
* @param string $format The format used in timestamp (e.g. the same as
* used in strftime). Note that some of the format
* options available to strftime may not have any
* effect within strptime; the exact subset that are
@@ -549,7 +1083,7 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m
*
*
* "unparsed"
* the date part which was not
* the timestamp part which was not
* recognized using the specified format
*
*
@@ -558,10 +1092,10 @@ function mktime(int $hour = null, int $minute = null, int $second = null, int $m
* @throws DatetimeException
*
*/
function strptime(string $date, string $format): array
function strptime(string $timestamp, string $format): array
{
error_clear_last();
$result = \strptime($date, $format);
$result = \strptime($timestamp, $format);
if ($result === false) {
throw DatetimeException::createFromPhpError();
}
@@ -577,18 +1111,17 @@ function strptime(string $date, string $format): array
* ways to define the default time zone.
*
* @param string $datetime A date/time string. Valid formats are explained in Date and Time Formats.
* @param int $now The timestamp which is used as a base for the calculation of relative
* @param int $baseTimestamp The timestamp which is used as a base for the calculation of relative
* dates.
* @return int Returns a timestamp on success, FALSE otherwise. Previous to PHP 5.1.0,
* this function would return -1 on failure.
* @return int Returns a timestamp on success, FALSE otherwise.
* @throws DatetimeException
*
*/
function strtotime(string $datetime, int $now = null): int
function strtotime(string $datetime, int $baseTimestamp = null): int
{
error_clear_last();
if ($now !== null) {
$result = \strtotime($datetime, $now);
if ($baseTimestamp !== null) {
$result = \strtotime($datetime, $baseTimestamp);
} else {
$result = \strtotime($datetime);
}