Disabling arginfo argument type checks for internal functions

php.internals

Nikita Popov

7 years ago
Hi internals, I plan to disable the checking of arginfo argument types for internal functions in https://github.com/php/php-src/pull/4232 (PHP 8 only). This is necessary to avoid duplicate type checks in both arginfo and zpp. Once this lands, PRs to add arginfo types (available through reflection) to internal functions will be accepted. As a sanity check, debug builds will make sure that the function call either throws or passes arginfo type checks -- this will help avoid the additional of arginfo types that are not correct enforced by the implementation. Regards, Nikita

Sara Golemon

7 years ago
On Thu, Jun 6, 2019 at 7:42 AM Nikita Popov <nikita.ppv@gmail.com> wrote:
> I plan to disable the checking of arginfo argument types for internal > functions in https://github.com/php/php-src/pull/4232 (PHP 8 only). This > is > necessary to avoid duplicate type checks in both arginfo and zpp. Once this > lands, PRs to add arginfo types (available through reflection) to internal > functions will be accepted. > > Yay! We can finally get decent reflection for internal function signatures!
-Sara

Nikita Popov

7 years ago
On Thu, Jun 6, 2019 at 2:41 PM Nikita Popov <nikita.ppv@gmail.com> wrote:
> Hi internals, > > I plan to disable the checking of arginfo argument types for internal > functions in https://github.com/php/php-src/pull/4232 (PHP 8 only). This > is necessary to avoid duplicate type checks in both arginfo and zpp. Once > this lands, PRs to add arginfo types (available through reflection) to > internal functions will be accepted. > > As a sanity check, debug builds will make sure that the function call > either throws or passes arginfo type checks -- this will help avoid the > additional of arginfo types that are not correct enforced by the > implementation. >
These changes have now landed. This means that arginfo types (both argument and return) can now be added to internal functions. See https://github.com/php/php-src/commit/227a9c75ec01800cb2b02d58ab74ec72abccf478 for a small sample. PRs are welcome :) Nikita