Hello Stanislav,
ok, that was good explanation, thanks.
best regards
marcus
Sunday, June 4, 2006, 6:02:33 PM, you wrote:
MB>>>typedef struct _zend_object_value {
MB>>> zend_object_handle handle;
MB>>> zend_object_handlers *handlers;
MB>>>} zend_object_value;
MB>>>
MB>>>And wouldn't it be faster to drop both handlers from the table and
MB>>>instead have zend_object_value have a pointer to zend_class_entry
MB>>>and that a pounter to the handler table?
> Not quite - since not all objects have zend_class_entry for them so you
> couldn't actually use it - unless you insert check each time _and_ write
> code to handle _both_ cases - using zend_class_entry pointer and using
> something else - so it's actually easier to do the right thing from the
> start and use the handlers. Of course, you could "optimize" it for the
> case zend_class_entry exists and add the zend_class_entry field into the
> object value - but IMHO the resulting code and model complication would do
> much more harm than speed improvement on saving one function call (which
> I'm not sure is of any significance). Also, this would inevitably lead to
> creating code which forgets to use handlers and breaks in all kinds of
> funny ways on overloaded objects. My opinion is that it is better to have
> one consistent API.
> As for the question why there are two handlers - because class name is
> useful in all kinds of contexts like backtaces, exceptions, messages, etc.
> even though you may not have zend_class_entry - so it's a possibility for
> the overloaded object to give maximum iformation there.
> --
> Stanislav Malyshev, Zend Products Engineer
> [EMAIL PROTECTED] http://www.zend.com/ +972-3-6139665 ext.115
Best regards,
Marcus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php