ID:               40477
 Updated by:       [EMAIL PROTECTED]
 Reported By:      piotrek dot pokora at gmail dot com
 Status:           Bogus
 Bug Type:         Variables related
 Operating System: debian/linux
 PHP Version:      5.2.1
 New Comment:

>> [EMAIL PROTECTED]
> Is this a list for reporting ZEND bugs?

No, this is a list when I'm ready to explain any question regarding
Zend Engine sources to a person who haven't ever heard of respect.


Previous Comments:
------------------------------------------------------------------------

[2007-02-15 09:36:25] [EMAIL PROTECTED]

Stop ranting and grasp the facts.

------------------------------------------------------------------------

[2007-02-15 09:32:19] piotrek dot pokora at gmail dot com

> [EMAIL PROTECTED]

Is this a list for reporting ZEND bugs?

http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?revision=1.393&view=markup

function: static void print_hash(HashTable *ht, int indent, zend_bool
is_object TSRMLS_DC)

printing value:
ZEND_PUTS("] => ");
zend_print_zval_r(*tmp, indent+PRINT_ZVAL_INDENT TSRMLS_CC);
ZEND_PUTS("\n");

`tmp` pointer is not a pointer for a zval returned by ANY
read_property. Neither standard nor user defined one.

If you are going to keep this bug with bogus status, I am going to
submit another one.

Logic and consistency is broken here. And this is absolutely a bug.
Behaviour of this function's part is unchanged since  ZEND1 engine.

------------------------------------------------------------------------

[2007-02-15 09:03:05] [EMAIL PROTECTED]

[EMAIL PROTECTED]

------------------------------------------------------------------------

[2007-02-14 20:51:42] piotrek dot pokora at gmail dot com

OK, let's talk code.

Sources.
GObject and GValue wrappers for a case we talk about:
http://midgard.tigris.org/source/browse/midgard/src/apis/php4/php_midgard_gobject_generic.c?rev=1.5&view=log

midgard_config class constructor and methods:
http://midgard.tigris.org/source/browse/midgard/src/apis/php4/php_midgard_config.c?rev=1.4&view=markup

PAY SPECIAL ATTENTION! There's no get_properties hook function.

PHP code:

$a = new midgard_config();
/* $a has underlying GObject object so properties for this object are
already assigned */
$a->read_file("my_config", TRUE);
print_r($a);
echo $a->dbtype;

Output:

midgard_config Object
(
    [__res] => Resource id #8
    [dbtype] =>
    [database] =>
    [dbuser] =>
    [dbpass] =>
    [host] =>
    [blobdir] =>
    [logfilename] =>
    [schema] =>
    [defaultlang] =>
    [loglevel] =>
    [tablecreate] =>
    [tableupdate] =>
    [testunit] =>
    [midgardusername] =>
    [midgardpassword] =>
    [authtype] => 0
    [pamfile] =>
)
MySQL

Do you see 'MySQL' value in print_r output?
Why then echo $a->dbtype; outputs MySQL? Even if I use standard ( not
defined by me ) get_properties handler??

Because language respect my read_property hook, isn't it.
 
Do you want similiar code for derived class?
Or maybe you can look at zend_print_zval_r_ex and notice that
print_hash is used for IS_ARRAY and IS_OBJECT value type?

DO YOU SEE read_property hook invoked by print_hash function??

Maybe I misunderstood something here but this is not the fact that
IS_ARRAY != IS_OBJECT and zend_print_zval_r_ex 
ignores completely user's read_property hook.

------------------------------------------------------------------------

[2007-02-14 17:20:07] [EMAIL PROTECTED]

>A feature?

A total misunderstanding on your side.

>Why function which prints object's properties doesn't use
>its read_property hook handler? 

Yes. Just re-read your question.
"Why a function which prints ALL the properties does not use
read_property()?"
read_property() requires "property_name" argument.
Care to imagine where it should be taken from? Out of your mind?
That's why get_properties() exist - it returns the hashtable with ALL
object properties.

>Again , for clarification.
>What is read_property handler hook for?

To read a property specifed by the GIVEN NAME.

>For me it's obvious that it's a bug when implementation 
>uses user's hook _almost_ always instead of always.

For me it's obvious that you misunderstand the whole concept.

Please STOP using this bug tracking system as a forum for your
questions, use the mailing list instead.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40477

-- 
Edit this bug report at http://bugs.php.net/?id=40477&edit=1

Reply via email to