rfc:autofunc

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:autofunc [2011/08/05 00:35] – future tyraelrfc:autofunc [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 3: Line 3:
   * Date: 2011-08-05   * Date: 2011-08-05
   * Author: Ferenc Kovacs <tyra3l@gmail.com>   * Author: Ferenc Kovacs <tyra3l@gmail.com>
-  * Status: Draft+  * Status: Inactive
   * First Published at: https://wiki.php.net/rfc/autofunc   * First Published at: https://wiki.php.net/rfc/autofunc
  
Line 9: Line 9:
 ===== Introduction ===== ===== 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. +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 ===== ===== Proposal =====
  
-The suggested change would be pretty straigtforward and BC compatible: +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 compination of T_CLASS and T_FUNCTION for now. +  * Add two new constants to spl: SPL_AUTOLOAD_CLASS, SPL_AUTOLOAD_FUNCTION.  
-    * 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. +  * Add a fourth optional parameter for spl_autoload_register called $types with the default value of SPL_AUTOLOAD_CLASS (this would keep the BC), supported values would be any combination of SPL_AUTOLOAD_CLASS and SPL_AUTOLOAD_FUNCTION for now. 
-  * the type for the missing token should be also passed to the $autoload_function callback as a second param. +    * 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. 
-    * this is needed to be able to handle multiple types of tokens with a common callback. +  * The type for the missing token should also be passed to the $autoload_function callback as a second param. 
-    * Note that passing more parameter to a function than it has in it'definition is valid, this would be also backward compatible change. +    * This is needed to be able to handle multiple types of tokens with a common callback. 
-  * change the current class autoloading to only call the autoloaders which match with the T_CLASS types. +    * Note that passing more parameters to a function than it has in its definition is valid, this would also be backward compatible change. 
-  * add the function autoloading to only call the autoloaders which match with the T_FUNCTION types.+  * Change the current class autoloading to only call the autoloaders which match with the SPL_AUTOLOAD_CLASS types. 
 +  * Add the function autoloading to only call the autoloaders which match with the SPL_AUTOLOAD_FUNCTION types.
  
 ==== Future improvements ==== ==== Future improvements ====
  
-Notice that currently only functions are proposed, but we could implement autoloading other tokens(T_CONST?) with this interface.+Notice that currently only functions are proposed, but we could implement autoloading other tokens (SPL_AUTOLOAD_CONSTANT, etc.) 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, 
 +  SPL_AUTOLOAD_FUNCTION 
 + ); 
 + 
 + // autoload mixed 
 + spl_autoload_register( 
 +  function ($name, $type) { 
 +   switch($type){ 
 +    case SPL_AUTOLOAD_CLASS: 
 +     /* ... */ 
 +     break; 
 +    case SPL_AUTOLOAD_FUNCTION: 
 +     /* ... */ 
 +     break;       
 +   } 
 +  }, 
 +  true, 
 +  false, 
 +  SPL_AUTOLOAD_CLASS|SPL_AUTOLOAD_FUNCTION 
 + ); 
 +</code> 
  
 ==== Patch ==== ==== Patch ====
Line 39: Line 81:
   * [[http://www.mail-archive.com/internals@lists.php.net/msg48820.html]]   * [[http://www.mail-archive.com/internals@lists.php.net/msg48820.html]]
  
 +==== Changelog ====
 + * 2011.08.17 - replace the T_* constants with SPL_AUTOLOAD_*
  
rfc/autofunc.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1