rfc:autofunc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rfc:autofunc [2011/08/05 01:04]
tyrael examples
rfc:autofunc [2017/09/22 13:28]
Line 1: Line 1:
-====== Request for Comments: Function autoloading through spl_autoload* ====== 
-  * Version: 1.0 
-  * Date: 2011-08-05 
-  * Author: Ferenc Kovacs <tyra3l@gmail.com> 
-  * Status: Draft 
-  * First Published at: https://wiki.php.net/rfc/autofunc 
- 
- 
-===== Introduction ===== 
- 
-The topic of supporting function autoloading was brought up many times in the past, this RFC introduces a potential implementation which would be consistent with what we have for autoloading classes.  
- 
-===== Proposal ===== 
- 
-The suggested change would be pretty straightforward 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 combination 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 the autoloader should be called. 
-  * The type for the missing token should also be 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 parameters to a function than it has in its definition is valid, this would also be a 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. 
- 
-==== Examples ==== 
-<code php> 
- <?php 
- // old behavior 
- spl_autoload_register( 
-  function ($name) { 
-   // include the class definition 
-   /* ... */ 
-  } 
- ); 
- 
- // autoload functions 
- spl_autoload_register( 
-  function ($name) { 
-   // include the function definition 
-   /* ... */ 
-  }, 
-  true, 
-  false, 
-  T_FUNCTION 
- ); 
- 
- // autoload mixed 
- spl_autoload_register( 
-  function ($name, $type) { 
-   switch($type){ 
-    case T_CLASS: 
-     /* ... */ 
-     break; 
-    case T_FUNCTION: 
-     /* ... */ 
-     break;       
-   } 
-  }, 
-  true, 
-  false, 
-  T_CLASS|T_FUNCTION 
- ); 
-</code> 
- 
- 
-==== Patch ==== 
- 
-Patches welcome! :) 
- 
-==== Related RFCs ==== 
-  * [[rfc:autodefine|RFC __autodefine]] 
- 
-==== Related discussions ==== 
-  * [[http://www.mail-archive.com/internals@lists.php.net/msg43983.html]] 
-  * [[http://www.mail-archive.com/internals@lists.php.net/msg48986.html]] 
-  * [[http://www.mail-archive.com/internals@lists.php.net/msg52287.html]] 
-  * [[http://www.mail-archive.com/internals@lists.php.net/msg48820.html]] 
- 
  
rfc/autofunc.txt · Last modified: 2017/09/22 13:28 (external edit)