rfc:autofunc

This is an old revision of the document!


Request for Comments: Function autoloading through spl_autoload*

Introduction

The topic of supporting function autoloading was brought up many times in the past, this RFC tries to introduce a potential implementation which would be consistent with what we have for autoloading classes.

Proposal

The suggested change would be pretty straigtforward and BC compatible:

  • add a fourth optional parameter for spl_autoload_register called $types with the default value of T_CLASS(this would keep the BC), supported values would be any compination of T_CLASS and T_FUNCTION for now.
    • as you would guess, this would work the same way as the $error_types parameter works for set_error_handler: you can specify for which type(s) of missing tokens should be the autoloader called.
  • the type for the missing token should be also passed to the $autoload_function callback as a second param.
    • this is needed to be able to handle multiple types of tokens with a common callback.
    • Note that passing more parameter to a function than it has in it's definition is valid, this would be also backward compatible change.
  • change the current class autoloading to only call the autoloaders which match with the T_CLASS types.
  • add the function autoloading to only call the autoloaders which match with the T_FUNCTION types.

Future improvements

Notice that currently only functions are proposed, but we could implement autoloading other tokens(T_CONST?) with this interface.

Patch

Patches welcome! :)

rfc/autofunc.1312504503.txt.gz · Last modified: 2017/09/22 13:28 (external edit)