Hi!
I've updated the patch and added some tests with it.
http://sitten-polizei.de/php/getstatic.diff
Looked at the patch. There's some things I noticed there:
1. _getstatic->common.fn_flags |= ~ZEND_ACC_ALLOW_STATIC;
What was the idea here? Maybe ~ is not intended?
2. Do we really need ZEND_ASSIGN_CLASS opcode, can't we reuse ASSIGN_OBJ
with flag, as we do for fetches?
3. In zend_std_set_static_property, I'm not sure we need to do
zend_update_class_constants there. We won't be using any values from it.
4. In zend_std_set_static_property, why you create new property_info two
times when property does not exist?
5. In zend_std_set_static_property, old value of the property is not
destroyed. Also, I'm not sure separation is handled there correctly -
previous value may be shared between variables, and just replacing it
would affect all shared variables. You may see how property handler does
assignments.
Alternatively, in the absence of the setter, you may just use the
existing assignment handler, just fetching the zval** as before and
passing it to zend_assign_to_variable. This would probably be better -
less stuff to do.
6. What would happen with foo::$bar += 1? I don't see assign-ops handled
anywhere in the patch.
7. Does zend_std_get_static_property handle the case of return by-ref
like property one does?
--
Stanislav Malyshev, Zend Software Architect
[EMAIL PROTECTED] http://www.zend.com/
(408)253-8829 MSN: [EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php