@@ -1982,6 +1982,54 @@ static int implement_date_interface_handler(zend_class_entry *interface, zend_cl
1982
1982
return SUCCESS ;
1983
1983
} /* }}} */
1984
1984
1985
+ static int date_interval_has_property (zval * object , zval * member , int type , void * * cache_slot ) /* {{{ */
1986
+ {
1987
+ php_interval_obj * obj ;
1988
+ zval tmp_member ;
1989
+ zval rv ;
1990
+ zval * prop ;
1991
+ int retval = 0 ;
1992
+
1993
+ if (Z_TYPE_P (member ) != IS_STRING ) {
1994
+ ZVAL_COPY (& tmp_member , member );
1995
+ convert_to_string (& tmp_member );
1996
+ member = & tmp_member ;
1997
+ cache_slot = NULL ;
1998
+ }
1999
+
2000
+ obj = Z_PHPINTERVAL_P (object );
2001
+
2002
+ if (!obj -> initialized ) {
2003
+ retval = (zend_get_std_object_handlers ())-> has_property (object , member , type , cache_slot );
2004
+ if (member == & tmp_member ) {
2005
+ zval_dtor (member );
2006
+ }
2007
+ return retval ;
2008
+ }
2009
+
2010
+ prop = date_interval_read_property (object , member , type , cache_slot , & rv );
2011
+
2012
+ if (prop != NULL ) {
2013
+ if (type == 2 ) {
2014
+ retval = 1 ;
2015
+ } else if (type == 1 ) {
2016
+ retval = zend_is_true (prop );
2017
+ } else if (type == 0 ) {
2018
+ retval = (Z_TYPE (* prop ) != IS_NULL );
2019
+ }
2020
+ } else {
2021
+ retval = (zend_get_std_object_handlers ())-> has_property (object , member , type , cache_slot );
2022
+ }
2023
+
2024
+ if (member == & tmp_member ) {
2025
+ zval_dtor (member );
2026
+ }
2027
+
2028
+ return retval ;
2029
+
2030
+ }
2031
+ /* }}} */
2032
+
1985
2033
static void date_register_classes (void ) /* {{{ */
1986
2034
{
1987
2035
zend_class_entry ce_date , ce_immutable , ce_timezone , ce_interval , ce_period , ce_interface ;
@@ -2063,6 +2111,7 @@ static void date_register_classes(void) /* {{{ */
2063
2111
date_object_handlers_interval .offset = XtOffsetOf (php_interval_obj , std );
2064
2112
date_object_handlers_interval .free_obj = date_object_free_storage_interval ;
2065
2113
date_object_handlers_interval .clone_obj = date_object_clone_interval ;
2114
+ date_object_handlers_interval .has_property = date_interval_has_property ;
2066
2115
date_object_handlers_interval .read_property = date_interval_read_property ;
2067
2116
date_object_handlers_interval .write_property = date_interval_write_property ;
2068
2117
date_object_handlers_interval .get_properties = date_object_get_properties_interval ;
0 commit comments