Hello Internals,

  apparently overloaded objects do not need to implement property access
and we issue an E_NOTICE in case someone tries to none-the-less. Dmirty
thankfully made this consistent for all handlers now. However this raised a
question on my side, whether we should increase the severity to E_WARNING
or even better E_RECOVERABLE_ERROR. To me the latter choice makes the most
sense as trying to is most likely a severe issue in the software. For
example someone create a database abstraction and then for a new db that
has a C level implementation that allows to use the classes directly,
probably a third party implementation, the properties are not implemneted.
Since the tests were done using the other one errors due to property
handling are probably noticed too late. And in the described situation
anyway are clear errors rather than notices. And I cannot figure an example
where it wouldn't be the case.

marcus

Saturday, July 26, 2008, 8:43:57 PM, you wrote:

> Hi Marcus,

> I set the same severity which was used for empty 
> read_property/write_property.

> In case of changing they should be changed too.

> I have no preference, so if you are interested in the change please 
> discuss it on @internals.

> Thanks. Dmitry.

> Marcus Boerger wrote:
>> Hello Dmitry,
>> 
>>   can we increase the severity here? The user might think he is using a
>> normal object and relying on the property assignment to work. Imo it should
>> be an E_WARNING or even better an E_RECOVERABLE_ERROR.
>> 
>> marcus
>> 
>> Saturday, July 26, 2008, 4:08:16 PM, you wrote:
>> 
>>> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.c?r1=1.716.2.12.2.24.2.32&r2=1.716.2.12.2.24.2.33&diff_format=u
>>> Index: ZendEngine2/zend_execute.c
>>> diff -u ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.32
>>> ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.33
>>> --- ZendEngine2/zend_execute.c:1.716.2.12.2.24.2.32     Mon Jul 14 09:49:00 
>>> 2008
>>> +++ ZendEngine2/zend_execute.c  Sat Jul 26 14:08:10 2008
>>> @@ -17,7 +17,7 @@
>>>    
>>> +----------------------------------------------------------------------+
>>>  */
>>>  
>>> -/* $Id: zend_execute.c,v 1.716.2.12.2.24.2.32 2008/07/14 09:49:00 dmitry 
>>> Exp $ */
>>> +/* $Id: zend_execute.c,v 1.716.2.12.2.24.2.33 2008/07/26 14:08:10 dmitry 
>>> Exp $ */
>>>  
>>>  #define ZEND_INTENSIVE_DEBUGGING 0
>>>  
>>> @@ -594,6 +594,11 @@
>>>                                 *retval = EG(uninitialized_zval_ptr);
>>>                                 PZVAL_LOCK(*retval);
>>>                         }
>>> +                       if (value_op->op_type == IS_TMP_VAR) {
>>> +                               FREE_ZVAL(value);
>>> +                       } else if (value_op->op_type == IS_CONST) {
>>> +                               zval_ptr_dtor(&value);
>>> +                       }
>>>                         FREE_OP(free_value);
>>>                         return;
>>>                 }
>>> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_def.h?r1=1.59.2.29.2.48.2.63&r2=1.59.2.29.2.48.2.64&diff_format=u
>>> Index: ZendEngine2/zend_vm_def.h
>>> diff -u ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.63
>>> ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.64
>>> --- ZendEngine2/zend_vm_def.h:1.59.2.29.2.48.2.63       Sat Jul 26 13:14:00 
>>> 2008
>>> +++ ZendEngine2/zend_vm_def.h   Sat Jul 26 14:08:11 2008
>>> @@ -18,7 +18,7 @@
>>>    
>>> +----------------------------------------------------------------------+
>>>  */
>>>  
>>> -/* $Id: zend_vm_def.h,v 1.59.2.29.2.48.2.63 2008/07/26 13:14:00 dmitry Exp 
>>> $ */
>>> +/* $Id: zend_vm_def.h,v 1.59.2.29.2.48.2.64 2008/07/26 14:08:11 dmitry Exp 
>>> $ */
>>>  
>>>  /* If you change this file, please regenerate the zend_vm_execute.h and
>>>   * zend_vm_opcodes.h files by running:
>>> @@ -3479,7 +3479,11 @@
>>>                         if (IS_OP2_TMP_FREE()) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (IS_OP2_TMP_FREE()) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -3936,9 +3940,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (IS_OP2_TMP_FREE()) {
>>>                                 zval_ptr_dtor(&offset);
>>> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_execute.h?r1=1.62.2.30.2.49.2.63&r2=1.62.2.30.2.49.2.64&diff_format=u
>>> Index: ZendEngine2/zend_vm_execute.h
>>> diff -u ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.63
>>> ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.64
>>> --- ZendEngine2/zend_vm_execute.h:1.62.2.30.2.49.2.63   Sat Jul 26 13:14:00 
>>> 2008
>>> +++ ZendEngine2/zend_vm_execute.h       Sat Jul 26 14:08:11 2008
>>> @@ -10688,7 +10688,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -10777,9 +10781,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -12457,7 +12471,11 @@
>>>                         if (1) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -12546,9 +12564,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -14273,7 +14301,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -14362,9 +14394,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -16702,7 +16744,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -16791,9 +16837,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -17875,7 +17931,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -17963,9 +18023,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -18894,7 +18964,11 @@
>>>                         if (1) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -18982,9 +19056,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -19913,7 +19997,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -20001,9 +20089,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -21202,7 +21300,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -21290,9 +21392,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -24133,7 +24245,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -24221,9 +24337,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -25783,7 +25909,11 @@
>>>                         if (1) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -25871,9 +26001,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (1) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -27479,7 +27619,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -27567,9 +27711,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>> @@ -29679,7 +29833,11 @@
>>>                         if (0) {
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>> -                      
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       if (Z_OBJ_HT_P(*container)->unset_property) {
>>> +                              
>>> Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
>>> +                       } else {
>>> +                               zend_error(E_NOTICE, "Trying to unset 
>>> property of non-object");
>>> +                       }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>>>                         } else {
>>> @@ -29767,9 +29925,19 @@
>>>                                 MAKE_REAL_ZVAL_PTR(offset);
>>>                         }
>>>                         if (prop_dim) {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if (Z_OBJ_HT_P(*container)->has_property) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_property(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check property of non-object");
>>> +                                       result = 0;
>>> +                               }
>>>                         } else {
>>> -                               result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               if
>>> (Z_OBJ_HT_P(*container)->has_dimension) {
>>> +                                       result =
>>> Z_OBJ_HT_P(*container)->has_dimension(*container, offset,
>>> (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
>>> +                               } else {
>>> +                                       zend_error(E_NOTICE, "Trying to 
>>> check element of non-array");
>>> +                                       result = 0;
>>> +                               }
>>>                         }
>>>                         if (0) {
>>>                                 zval_ptr_dtor(&offset);
>> 
>> 
>> 
>> 
>> Best regards,
>>  Marcus
>> 




Best regards,
 Marcus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to