derick Sun May 3 18:46:29 2009 UTC Added files: (Branch: PHP_5_3) /php-src/ext/date/tests bug45682.phpt
Modified files: /php-src/ext/date php_date.c /php-src NEWS Log: - MFH: Fixed bug #45682 (Unable to var_dump(DateInterval)). http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c?r1=1.43.2.45.2.51.2.69&r2=1.43.2.45.2.51.2.70&diff_format=u Index: php-src/ext/date/php_date.c diff -u php-src/ext/date/php_date.c:1.43.2.45.2.51.2.69 php-src/ext/date/php_date.c:1.43.2.45.2.51.2.70 --- php-src/ext/date/php_date.c:1.43.2.45.2.51.2.69 Sun May 3 18:22:40 2009 +++ php-src/ext/date/php_date.c Sun May 3 18:46:28 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_date.c,v 1.43.2.45.2.51.2.69 2009/05/03 18:22:40 derick Exp $ */ +/* $Id: php_date.c,v 1.43.2.45.2.51.2.70 2009/05/03 18:46:28 derick Exp $ */ #include "php.h" #include "php_streams.h" @@ -548,6 +548,7 @@ static int date_object_compare_date(zval *d1, zval *d2 TSRMLS_DC); static HashTable *date_object_get_properties(zval *object TSRMLS_DC); +static HashTable *date_object_get_properties_interval(zval *object TSRMLS_DC); zval *date_interval_read_property(zval *object, zval *member, int type TSRMLS_DC); void date_interval_write_property(zval *object, zval *member, zval *value TSRMLS_DC); @@ -1951,6 +1952,7 @@ date_object_handlers_interval.clone_obj = date_object_clone_interval; date_object_handlers_interval.read_property = date_interval_read_property; date_object_handlers_interval.write_property = date_interval_write_property; + date_object_handlers_interval.get_properties = date_object_get_properties_interval; INIT_CLASS_ENTRY(ce_period, "DatePeriod", date_funcs_period); ce_period.create_object = date_object_new_period; @@ -2178,6 +2180,34 @@ return new_ov; } +static HashTable *date_object_get_properties_interval(zval *object TSRMLS_DC) +{ + HashTable *props; + zval *zv; + php_interval_obj *intervalobj; + + + intervalobj = (php_interval_obj *) zend_object_store_get_object(object TSRMLS_CC); + + props = intervalobj->std.properties; + +#define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \ + MAKE_STD_ZVAL(zv); \ + ZVAL_LONG(zv, intervalobj->diff->f); \ + zend_hash_update(props, n, strlen(n) + 1, &zv, sizeof(zval), NULL); + + PHP_DATE_INTERVAL_ADD_PROPERTY("y", y); + PHP_DATE_INTERVAL_ADD_PROPERTY("m", m); + PHP_DATE_INTERVAL_ADD_PROPERTY("d", d); + PHP_DATE_INTERVAL_ADD_PROPERTY("h", h); + PHP_DATE_INTERVAL_ADD_PROPERTY("i", i); + PHP_DATE_INTERVAL_ADD_PROPERTY("s", s); + PHP_DATE_INTERVAL_ADD_PROPERTY("invert", invert); + PHP_DATE_INTERVAL_ADD_PROPERTY("days", days); + + return props; +} + static inline zend_object_value date_object_new_period_ex(zend_class_entry *class_type, php_period_obj **ptr TSRMLS_DC) { php_period_obj *intern; http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.576&r2=1.2027.2.547.2.965.2.577&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.965.2.576 php-src/NEWS:1.2027.2.547.2.965.2.577 --- php-src/NEWS:1.2027.2.547.2.965.2.576 Sun May 3 16:16:15 2009 +++ php-src/NEWS Sun May 3 18:46:28 2009 @@ -117,6 +117,7 @@ - Fixed bug #46048 (SimpleXML top-level @attributes not part of iterator). (David C.) - Fixed bug #45877 (Array key '2147483647' left as string). (Matt) +- Fixed bug #45682 (Unable to var_dump(DateInterval)). (Derick) - Fixed bug #45432 (PDO: persistent connection leak). (Felipe) - Fixed bug #43831 ($this gets mangled when extending PDO with persistent connection). (Felipe) http://cvs.php.net/viewvc.cgi/php-src/ext/date/tests/bug45682.phpt?view=markup&rev=1.1 Index: php-src/ext/date/tests/bug45682.phpt +++ php-src/ext/date/tests/bug45682.phpt --TEST-- Bug #45682 (Unable to var_dump(DateInterval)) --INI-- date.timezone=UTC --FILE-- <?php $date = new DateTime("28-July-2008"); $other = new DateTime("31-July-2008"); $diff = date_diff($date, $other); var_dump($diff); --EXPECT-- object(DateInterval)#3 (8) { [u"y"]=> int(0) [u"m"]=> int(0) [u"d"]=> int(3) [u"h"]=> int(0) [u"i"]=> int(0) [u"s"]=> int(0) [u"invert"]=> int(0) [u"days"]=> int(3) } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php