Re: [RFC] PHP Attributes
| From: | Dmitry Stogov | Date: | Mon, 25 Apr 2016 12:26:26 +0000 |
| Subject: | Re: [RFC] PHP Attributes | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-92727@lists.php.net to get a copy of this message | ||
On 04/25/2016 02:28 PM, Joe Watkins wrote:
Morning internals,why? It's quite easy to use attributes in C extension. if (op_array->attributes) {This morning I attempted to prototype a dbc extension.In my opinion, the patch, or internals, are not fit for the intended purpose.At the moment, the *only* way to perform meta programming is going to be in userland. This is going to make it prohibitively slow, and rather pointless.
zval *val = zend_hash_find_str(op_array->attributes, "requires", sizeof("requires")-1_;
if (val && Z_TYPE_P(val) == IS_ARRAY) {
HashTable *ht = Z_ARRVAL_P(val);
ZEND_HASH_FORECH_VAL(ht, val) {
...
ZEND_HASH_FOREACH_END();
}
}
What exactly do you like to be exported? zend_compile_expr()? It's not a problem to export it in 7.1.None of the compiler API is exported: This means that AST is almost useless to internals unless it's a constant expression.Do you mean C or PHP API?
This is completely unrelated historical problem :)There is a problem with zend extensions and fcall handlers, which we are not sure how to fix.
Working with AST is easy, working with opcodes directly is not.Before we can have this, we must work on the AST API and allow extensions to transform AST with much better hooks than we have at the moment. This is related to user extendable parser, that is definitely not a subject of this RFC.
I got you. Attributes are not especially for DbC and user extendable parser, and they are not a magic wand. They may be an underlying layer for many things (including DbC). But to reach what you want, you'll have to start from something anyway. Thanks. Dmitry.I was excited to start working with this .. at the moment, I'm -1.
Cheers Joe PS. If anyone is interested http://github.com/krakjoe/dbc was my first attempt at interacting with the patch. On Mon, Apr 25, 2016 at 11:08 AM, Dmitry Stogov <dmitry@zend.com <mailto:dmitry@zend.com>> wrote:On 04/25/2016 12:44 PM, Pierre Joye wrote:hi Dmitry,Awesome work! Thanks.I do like you keep what was discussed last time. Make the basics available and leave the rest to the applications (doctrine or other).I feel too that how the apps will interact with may need some more discussions but other commented on it so I won't interfer here :).I've collected the most interesting feedback at https://wiki.php.net/rfc/attributes#open_issues And I'm going to correct RFC and implementation rethinking these questions.Thanks. Dmitry.On Mon, Apr 25, 2016 at 3:17 PM, Dmitry Stogov <dmitry@zend.com <mailto:dmitry@zend.com>> wrote:The proposed by you "@..." syntax just won't fit into PHP grammar, because @ used as silence operator.Attribute, syntax is taken from HHVM. I don't see a big reason to introduce more fragmentation into PHP world.Also see https://docs.hhvm.com/hack/attributes/syntax and I fully agree with Dmitry here. It makes no sense now to go with our own syntax.If any of the hhvm developers are around, we may get some feedbacks about their current APIs (using getAttributes) and if they would like to change one thing or another. That could (or must) part of the PHP specifications.Cheers,-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php