mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Adding a new createFromImmutable
method to the
`DateTime` class to mirror the current `DateTime::createFromMutable()`
This commit is contained in:
parent
fe29b8134c
commit
42660f3d6a
2 changed files with 37 additions and 3 deletions
|
@ -183,6 +183,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_date_format, 0, 0, 2)
|
|||
ZEND_ARG_INFO(0, format)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_date_method_create_from_immutable, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, DateTimeImmutable)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_date_method_format, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, format)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
@ -463,9 +467,10 @@ static const zend_function_entry date_funcs_interface[] = {
|
|||
};
|
||||
|
||||
const zend_function_entry date_funcs_date[] = {
|
||||
PHP_ME(DateTime, __construct, arginfo_date_create, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
|
||||
PHP_ME(DateTime, __wakeup, NULL, ZEND_ACC_PUBLIC)
|
||||
PHP_ME(DateTime, __set_state, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
PHP_ME(DateTime, __construct, arginfo_date_create, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)
|
||||
PHP_ME(DateTime, __wakeup, NULL, ZEND_ACC_PUBLIC)
|
||||
PHP_ME(DateTime, __set_state, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
PHP_ME(DateTime, createFromImmutable, arginfo_date_method_create_from_immutable, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
PHP_ME_MAPPING(createFromFormat, date_create_from_format, arginfo_date_create_from_format, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
PHP_ME_MAPPING(getLastErrors, date_get_last_errors, arginfo_date_get_last_errors, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||
PHP_ME_MAPPING(format, date_format, arginfo_date_method_format, 0)
|
||||
|
@ -2832,6 +2837,34 @@ PHP_METHOD(DateTime, __wakeup)
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto DateTime::createFromImmutable(DateTimeImmutable object)
|
||||
Creates new DateTime object from an existing DateTimeImmutable object.
|
||||
*/
|
||||
PHP_METHOD(DateTime, createFromImmutable)
|
||||
{
|
||||
zval *datetimeimmutable_object = NULL;
|
||||
php_date_obj *new_obj = NULL;
|
||||
php_date_obj *old_obj = NULL;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "O!", &datetimeimmutable_object, date_ce_immutable) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
php_date_instantiate(date_ce_date, return_value);
|
||||
old_obj = Z_PHPDATE_P(datetimeimmutable_object);
|
||||
new_obj = Z_PHPDATE_P(return_value);
|
||||
|
||||
new_obj->time = timelib_time_ctor();
|
||||
*new_obj->time = *old_obj->time;
|
||||
if (old_obj->time->tz_abbr) {
|
||||
new_obj->time->tz_abbr = strdup(old_obj->time->tz_abbr);
|
||||
}
|
||||
if (old_obj->time->tz_info) {
|
||||
new_obj->time->tz_info = old_obj->time->tz_info;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* Helper function used to add an associative array of warnings and errors to a zval */
|
||||
static void zval_from_error_container(zval *z, timelib_error_container *error) /* {{{ */
|
||||
{
|
||||
|
|
|
@ -50,6 +50,7 @@ PHP_FUNCTION(getdate);
|
|||
PHP_METHOD(DateTime, __construct);
|
||||
PHP_METHOD(DateTime, __wakeup);
|
||||
PHP_METHOD(DateTime, __set_state);
|
||||
PHP_METHOD(DateTime, createFromImmutable);
|
||||
PHP_FUNCTION(date_create);
|
||||
PHP_FUNCTION(date_create_immutable);
|
||||
PHP_FUNCTION(date_create_from_format);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue