derick Sat, 10 Apr 2010 20:33:41 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=297814
Log: - Expose date-extension object creation externally. - Expose DateTime object initialisation externally. Changed paths: U php/php-src/trunk/ext/date/php_date.c U php/php-src/trunk/ext/date/php_date.h Modified: php/php-src/trunk/ext/date/php_date.c =================================================================== --- php/php-src/trunk/ext/date/php_date.c 2010-04-10 19:43:42 UTC (rev 297813) +++ php/php-src/trunk/ext/date/php_date.c 2010-04-10 20:33:41 UTC (rev 297814) @@ -475,7 +475,6 @@ static char* guess_timezone(const timelib_tzdb *tzdb TSRMLS_DC); static void date_register_classes(TSRMLS_D); -static zval * date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC); /* }}} */ ZEND_DECLARE_MODULE_GLOBALS(date) @@ -1846,7 +1845,7 @@ /* Create new object */ MAKE_STD_ZVAL(iterator->current); - date_instantiate(date_ce_date, iterator->current TSRMLS_CC); + php_date_instantiate(date_ce_date, iterator->current TSRMLS_CC); newdateobj = (php_date_obj *) zend_object_store_get_object(iterator->current TSRMLS_CC); newdateobj->time = timelib_time_ctor(); *newdateobj->time = *it_time; @@ -2339,7 +2338,7 @@ } /* Advanced Interface */ -static zval * date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC) +PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC) { Z_TYPE_P(object) = IS_OBJECT; object_init_ex(object, pce); @@ -2359,7 +2358,7 @@ DATEG(last_errors) = last_errors; } -static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int time_str_len, char *format, zval *timezone_object, int ctor TSRMLS_DC) +PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int time_str_len, char *format, zval *timezone_object, int ctor TSRMLS_DC) { timelib_time *now; timelib_tzinfo *tzi; @@ -2454,8 +2453,8 @@ RETURN_FALSE; } - date_instantiate(date_ce_date, return_value TSRMLS_CC); - if (!date_initialize(zend_object_store_get_object(return_value TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { + php_date_instantiate(date_ce_date, return_value TSRMLS_CC); + if (!php_date_initialize(zend_object_store_get_object(return_value TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { RETURN_FALSE; } } @@ -2474,8 +2473,8 @@ RETURN_FALSE; } - date_instantiate(date_ce_date, return_value TSRMLS_CC); - if (!date_initialize(zend_object_store_get_object(return_value TSRMLS_CC), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { + php_date_instantiate(date_ce_date, return_value TSRMLS_CC); + if (!php_date_initialize(zend_object_store_get_object(return_value TSRMLS_CC), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { RETURN_FALSE; } } @@ -2493,7 +2492,7 @@ zend_replace_error_handling(EH_THROW, NULL, &error_handling TSRMLS_CC); if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sO", &time_str, &time_str_len, &timezone_object, date_ce_timezone)) { - date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC); + php_date_initialize(zend_object_store_get_object(getThis() TSRMLS_CC), time_str, time_str_len, NULL, timezone_object, 1 TSRMLS_CC); } zend_restore_error_handling(&error_handling TSRMLS_CC); } @@ -2520,7 +2519,7 @@ case TIMELIB_ZONETYPE_ABBR: { char *tmp = emalloc(Z_STRLEN_PP(z_date) + Z_STRLEN_PP(z_timezone) + 2); snprintf(tmp, Z_STRLEN_PP(z_date) + Z_STRLEN_PP(z_timezone) + 2, "%s %s", Z_STRVAL_PP(z_date), Z_STRVAL_PP(z_timezone)); - date_initialize(*dateobj, tmp, Z_STRLEN_PP(z_date) + Z_STRLEN_PP(z_timezone) + 1, NULL, NULL, 0 TSRMLS_CC); + php_date_initialize(*dateobj, tmp, Z_STRLEN_PP(z_date) + Z_STRLEN_PP(z_timezone) + 1, NULL, NULL, 0 TSRMLS_CC); efree(tmp); return 1; } @@ -2531,12 +2530,12 @@ tzi = php_date_parse_tzfile(Z_STRVAL_PP(z_timezone), DATE_TIMEZONEDB TSRMLS_CC); ALLOC_INIT_ZVAL(tmp_obj); - tzobj = zend_object_store_get_object(date_instantiate(date_ce_timezone, tmp_obj TSRMLS_CC) TSRMLS_CC); + tzobj = zend_object_store_get_object(php_date_instantiate(date_ce_timezone, tmp_obj TSRMLS_CC) TSRMLS_CC); tzobj->type = TIMELIB_ZONETYPE_ID; tzobj->tzi.tz = tzi; tzobj->initialized = 1; - date_initialize(*dateobj, Z_STRVAL_PP(z_date), Z_STRLEN_PP(z_date), NULL, tmp_obj, 0 TSRMLS_CC); + php_date_initialize(*dateobj, Z_STRVAL_PP(z_date), Z_STRLEN_PP(z_date), NULL, tmp_obj, 0 TSRMLS_CC); zval_ptr_dtor(&tmp_obj); return 1; } @@ -2560,7 +2559,7 @@ myht = HASH_OF(array); - date_instantiate(date_ce_date, return_value TSRMLS_CC); + php_date_instantiate(date_ce_date, return_value TSRMLS_CC); dateobj = (php_date_obj *) zend_object_store_get_object(return_value TSRMLS_CC); php_date_initialize_from_hash(&return_value, &dateobj, myht TSRMLS_CC); } @@ -2901,7 +2900,7 @@ dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC); DATE_CHECK_INITIALIZED(dateobj->time, DateTime); if (dateobj->time->is_localtime/* && dateobj->time->tz_info*/) { - date_instantiate(date_ce_timezone, return_value TSRMLS_CC); + php_date_instantiate(date_ce_timezone, return_value TSRMLS_CC); tzobj = (php_timezone_obj *) zend_object_store_get_object(return_value TSRMLS_CC); tzobj->initialized = 1; tzobj->type = dateobj->time->zone_type; @@ -3125,7 +3124,7 @@ timelib_update_ts(dateobj1->time, NULL); timelib_update_ts(dateobj2->time, NULL); - date_instantiate(date_ce_interval, return_value TSRMLS_CC); + php_date_instantiate(date_ce_interval, return_value TSRMLS_CC); interval = zend_object_store_get_object(return_value TSRMLS_CC); interval->diff = timelib_diff(dateobj1->time, dateobj2->time); if (absolute) { @@ -3171,7 +3170,7 @@ if (SUCCESS != timezone_initialize(&tzi, tz TSRMLS_CC)) { RETURN_FALSE; } - tzobj = zend_object_store_get_object(date_instantiate(date_ce_timezone, return_value TSRMLS_CC) TSRMLS_CC); + tzobj = zend_object_store_get_object(php_date_instantiate(date_ce_timezone, return_value TSRMLS_CC) TSRMLS_CC); tzobj->type = TIMELIB_ZONETYPE_ID; tzobj->tzi.tz = tzi; tzobj->initialized = 1; @@ -3563,7 +3562,7 @@ RETURN_FALSE; } - date_instantiate(date_ce_interval, return_value TSRMLS_CC); + php_date_instantiate(date_ce_interval, return_value TSRMLS_CC); time = timelib_strtotime(time_str, time_str_len, &err, DATE_TIMEZONEDB); diobj = (php_interval_obj *) zend_object_store_get_object(return_value TSRMLS_CC); Modified: php/php-src/trunk/ext/date/php_date.h =================================================================== --- php/php-src/trunk/ext/date/php_date.h 2010-04-10 19:43:42 UTC (rev 297813) +++ php/php-src/trunk/ext/date/php_date.h 2010-04-10 20:33:41 UTC (rev 297814) @@ -177,4 +177,9 @@ PHPAPI zend_class_entry *php_date_get_date_ce(void); PHPAPI zend_class_entry *php_date_get_timezone_ce(void); +/* Functions for creating DateTime objects, and initializing them from a string */ +PHPAPI zval *php_date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC); +PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int time_str_len, char *format, zval *timezone_object, int ctor TSRMLS_DC); + + #endif /* PHP_DATE_H */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php