fix bug #14218 Class' extending HttpMessage properties not accessible
authorMichael Wallner <mike@php.net>
Fri, 11 Jul 2008 16:45:11 +0000 (16:45 +0000)
committerMichael Wallner <mike@php.net>
Fri, 11 Jul 2008 16:45:11 +0000 (16:45 +0000)
http_message_object.c
tests/HttpMessage_002.phpt

index acb8a1d..b6b3aaf 100644 (file)
@@ -418,7 +418,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type
 #else
        zend_property_info *pinfo = zend_get_property_info(obj->zo.ce, member, 1 TSRMLS_CC);
        
-       if (!pinfo || ACC_PROP_PUBLIC(pinfo->flags)) {
+       if (!pinfo) {
                return zend_get_std_object_handlers()->read_property(object, member, type TSRMLS_CC);
        }
 #endif
@@ -511,11 +511,8 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type
                        break;
                
                default:
-#ifdef WONKY
+                       FREE_ZVAL(return_value);
                        return zend_get_std_object_handlers()->read_property(object, member, type TSRMLS_CC);
-#else
-                       RETVAL_NULL();
-#endif
        }
 
        return return_value;
@@ -531,7 +528,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va
 #else
        zend_property_info *pinfo = zend_get_property_info(obj->zo.ce, member, 1 TSRMLS_CC);
        
-       if (!pinfo || ACC_PROP_PUBLIC(pinfo->flags)) {
+       if (!pinfo) {
                zend_get_std_object_handlers()->write_property(object, member, value TSRMLS_CC);
                return;
        }
@@ -617,9 +614,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va
                        break;
                
                default:
-#ifdef WONKY
                        zend_get_std_object_handlers()->write_property(object, member, value TSRMLS_CC);
-#endif
                        break;
        }
        if (cpy != value) {
index 4e1f10c..a7ad345 100644 (file)
@@ -10,8 +10,29 @@ checkcls('HttpMessage');
 <?php
 class Message extends HttpMessage
 {
+       var $var_property = 'var';
+       public $public_property = 'public';
+       protected $protected_property = 'protected';
+       private $private_property = 'private';
+
        public function test()
        {
+               var_dump($this->var_property);
+               var_dump($this->public_property);
+               var_dump($this->protected_property);
+               var_dump($this->private_property);
+               var_dump($this->non_ex_property);
+               $this->var_property.='_property';
+               $this->public_property.='_property';
+               $this->protected_property.='_property';
+               $this->private_property.='_property';
+               $this->non_ex_property = 'non_ex';
+               var_dump($this->var_property);
+               var_dump($this->public_property);
+               var_dump($this->protected_property);
+               var_dump($this->private_property);
+               var_dump($this->non_ex_property);
+
                print_r($this->headers);
                $this->headers['Foo'] = 'Bar';
        }
@@ -26,7 +47,19 @@ echo "Done\n";
 ?>
 --EXPECTF--
 %aTEST
+string(3) "var"
+string(6) "public"
+string(9) "protected"
+string(7) "private"
+
+Notice: Undefined property: Message::$non_ex_property in %s
+NULL
+string(12) "var_property"
+string(15) "public_property"
+string(18) "protected_property"
+string(16) "private_property"
+string(6) "non_ex"
 Array
 (
 )
-%aFatal error%aCannot access HttpMessage properties by reference or array key/index in%a
+%aFatal error%sCannot access HttpMessage properties by reference or array key/index in%s