how to add annotations to a C extension function
| From: | Brett McBride | Date: | Sat, 08 Jan 2022 08:12:58 +0000 |
| Subject: | how to add annotations to a C extension function | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-327884@lists.php.net to get a copy of this message | ||
This is a php-internals question.
I'm trying to fix some php8.1 deprecation notices in a C extension
(google/protobuf). They mostly relate to ArrayAccess and Iterator now
requiring return types:
Deprecated: Return type of
Google\Protobuf\Internal\RepeatedField::offsetGet($index) should either be
compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the
#[\ReturnTypeWillChange] attribute should be used to temporarily suppress
the notice in Unknown on line 0
I've been able to fix the methods that require standard return types (int,
void, etc), via ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX macro.
The ones I can't fix (due to needing to maintain BC to php7.0) involve the
"mixed" type, so as an interim solution I want to add the
#[\ReturnTypeWillChange]
annotation to some methods, but I can't find a way to do that.
This is cross-posted on stack overflow, if anybody is after points:
https://stackoverflow.com/questions/70620027/how-to-create-a-php-extension-function-with-a-return-type-hint-plus-annotation
Thanks,
Brett